原生js就地排序的快速排序演算法

2021-09-12 14:15:31 字數 399 閱讀 8063

快排思想阮一峰老師曾經寫過,但是那並不是最正確的演算法,不斷建立新的陣列,會增加空間複雜度;而且通過splice方法提取基準點,由於v8引擎對於splice方法處理的時間負責度為o,所以效能會降低,但是不管怎麼說,阮一峰老師的排序基本思想是正確的,選取乙個基準點,小的放在前面,大的放在後面,依次遞迴;這對於理解標準的排序演算法會有很大的幫助;

function quicksort(arr,left,right)

}// -1是因為最後依次符合條件的i加1了

swap(arr,index-1,left);

return index-1

}function swap(arr,i,j)

上面這個方法,是原地排序的,只需要遞迴的記憶體空間,空間複雜度為log,非常值得查閱;

js快速排序演算法

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

JS排序演算法之快速排序

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

js的 快速排序 演算法

快速排序的原理 選擇陣列中的隨便乙個元素作為基準,遍歷陣列,將大於它的元素放在右邊,小於他的元素放在左邊。然後對左右兩邊的陣列繼續執行如上操作,如此遞迴直到左右兩邊的陣列為1。js簡單實現 var quicksort function arr var pivotindex math.floor ne...