天天看點

快速排序

  程式員最不該缺的就是你的算法,算法是你的價值所在,你可以不會代碼的具體的文法,但是必須得會算法。這個是我的見解。下面來寫一一下傳統的快速排序方法:(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的軟體包管理器。從成千上萬的開發人員中查找、共享和重用代碼包,并以強大的新方式組裝它們。

繼續閱讀