程式員最不該缺的就是你的算法,算法是你的價值所在,你可以不會代碼的具體的文法,但是必須得會算法。這個是我的見解。下面來寫一一下傳統的快速排序方法:(3步);
1.找基準;
2.分兩邊
3.遞歸,重複上面的操作;
代碼:
function quickSort (arr) {
if(arr.length<=1) return arr;
var referIndex = Math.floor(arr.length/2);
var referNumber = arr.splice(referIndex,1)[0];
var left = [],right = [];
for(var i =0;i<arr.length;i++) {
if(arr[i]<=referNumber) {
left.push(arr[i]);
}else {
right.push(arr[i]);
}
}
return quickSort(left).concat([referNumber],quickSort(right));
};
var a =[2,4,6,7,9,10,35];
quickSort(a);
代碼很簡單就是這麼幾句話:
來左代碼的分析:
1.判斷arr的長度,如果小于等于1的就是他本身,不用排序,return 程式結束;
2.找一個參考的index基本找中間,因為号了解,最好是中間的就是最中間的值,理想狀态這樣的,因為這套算法就是取一個數,一分為二(左邊為小數組,右邊為大數組);
3.索引有了,我們根據這個索引取出這個值,arr.splice()這個方法就是,添加或者删除數組的中的數或者數組,傳回的是修改後的數組.這裡的傳回的數組是一個數,是以取下标[0]
splice的用法:

4.聲明兩個數組,左邊一個,右邊一個;
5.周遊,把參考值和數組中的值進行比較,小的放左邊的數組,大的放右邊的數組;
6.然後,分下來的數組就是兩個數組,然後遞歸,使用這個方法,在把這些數組再分,最後就是一個個數組,順序大小排列好的數組
7.最後用數組的concat的方法,把所有數組打散拼成數組;如圖:
推薦:
https://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651553119&idx=1&sn=e9ba55c895f16e269ca2c1e307a8e0a7&chksm=8025aa9eb75223880e438924c2a96675067f67c65839a8fe9e0121ee56191f3ad0bd00318c56&mpshare=1&scene=23&srcid=1204rPTjNA1cYurdEDe1caqU#rd每日一句:npm is the package manager for JavaScript. Find, share, and reuse packages of code from hundreds of thousands of developers — and assemble them in powerful new ways.(npm官網)
翻譯:NPM是JavaScript的軟體包管理器。從成千上萬的開發人員中查找、共享和重用代碼包,并以強大的新方式組裝它們。