從陣列中選擇乙個元素作為基準點
排序陣列,所有比基準值小的元素擺放在左邊,而大於基準值的擺放在右邊。每次分割結束以後基準值會插入到中間去。
最後利用遞迴,將擺放在左邊的陣列和右邊的陣列在進行一次上述的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));
};
functionswap(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語言版 第二版 嚴...