js排序之快速排序

2022-07-26 10:54:14 字數 851 閱讀 1398

從陣列中選擇乙個元素作為基準點

排序陣列,所有比基準值小的元素擺放在左邊,而大於基準值的擺放在右邊。每次分割結束以後基準值會插入到中間去。

最後利用遞迴,將擺放在左邊的陣列和右邊的陣列在進行一次上述的1和2操作。

var quicksort = function

(arr)

var pivotindex = math.floor(arr.length / 2);

var pivot = arr.splice(pivotindex, 1)[0];

var left =;

var right =;

for (var i = 0; i < arr.length; i++)

else

} return

quicksort(left).concat([pivot], quicksort(right));

};

function

swap(a, i, j) /**

* * @param a 陣列

* @param p 起始下標

* @param r 結束下標 + 1 */

function

divide(a, p, r)

} swap(a, i + 1, r - 1);

return i + 1;}/*

* *

* @param a 陣列

* @param p 起始下標

* @param r 結束下標 + 1 */

function qsort(a, p = 0, r)

return

a;}

JS排序演算法之快速排序

快速排序和歸併排序都是採用二分法的排序演算法。都是 olog n 不過快速排序更複雜一些。快遞排序跟歸併排序的區別是順序,它是先總後分。不斷地從斷點分,讓左邊的數都小於斷點,右邊都大於斷點。然後迭代切分。1 var group 1,9,3,5,0,4,2,8 23 function swap k,y...

js 快速排序

最近看到乙個排序,所以自己也看了一下,這裡分享一下。首先建立乙個陣列 建立乙個陣列 const arr function random min,max function generatearr len generatearr 10 自己可以試試,看看效果 然後是重點了,排序的主體函式 functio...

JS快速排序

從這裡看到的,修改了下,跳出左右側搜尋時不需要判斷等於基準值的情況,其次 當排序完有一側只有0或者1個數字時則該側不再進行排序 不判斷也可以,因為此時start等於end,進行排序時,會直接跳出迴圈,但是仍會列印排序後的陣列,就會有重複,影響判斷排序次數。陣列數值用的是資料結構 c語言版 第二版 嚴...