js實現快速排序演算法

2021-10-23 20:42:19 字數 1085 閱讀 6486

假設有這麼乙個陣列

let ary =[12

,8,15

,16,1

,24]

找到中間項15

​ --> 把它從原來陣列中移除

​ --> 獲取這一項的結果

讓拿出來的每一項和中間項繼續比較

並建立兩個陣列(左邊陣列和右邊陣列)

比中間項小的放到左邊

比他大的放到右邊

左邊陣列:

12,8,1

右邊陣列

16,24

重複上面的操作 再分別將左右兩個陣列再取中間項,再分成左右兩個陣列,比中間項小的放到左邊,比他大的放到右邊

/*

* 實現插入排序的方法

* @params

* ary [array] 需要排序的陣列

* @return

* [array]排序後的新陣列

*/function

quick

(ary)

// 1.找到陣列的中間項,在原有的陣列中把它移除

let middleindex = math.

floor

(ary.length/2)

let middlevalue = ary.

splice

(middleindex,1)

[0]// 2.準備左右兩個陣列,迴圈剩下陣列中的每一項,比當前項小的放到左邊陣列中,反之放到右邊陣列中

let aryleft =

, aryright =

;for

(let i=

0;i1ength;i++

)// 3.遞迴方式讓左右兩邊的陣列持續這樣處理,一直到左 右兩邊都排好序為止(最後讓左邊+中間+右邊拼接成為最後的結果)

return

quick

(aryleft)

.concat

(middlevalue,

quick

(aryright));

}

js快速排序演算法

演算法 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。動畫演示 點我檢視效果 實現 function quicksort array hight 從左往右找,直到找到乙個大於基準的...

js實現快速排序

快排思想 1 在資料集之中,選擇乙個元素作為 基準 pivot 2 所有小於 基準 的元素,都移到 基準 的左邊 所有大於 基準 的元素,都移到 基準 的右邊。var quicksort function arr var pivotindex math.floor arr.length 2 var ...

js實現快速排序

快速排序主要用到的是遞迴和分治的思想當資料量比較大時,快排無疑是最好的選擇。對於公升序來講,大體思路是,首先我們定義左邊指標為i,最右邊為j,然後選最左邊的數字作為參照,然後從右邊往左邊搜尋,直到找到比參照數小的,然後將這個數字賦給i指標所在位置,再從左往右搜尋直到找到比參照大的,然後將這個數賦給j...