JS快速排序

2021-08-21 13:45:03 字數 1055 閱讀 5493

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

至於第二種簡捷的方式,好像通常都叫阮一峰js快速排序,非常簡單易懂,但不是最優解,當然這種好像也不是,但是由於那種方式每次都需要分配陣列,所以我保險還是選用這種稍微麻煩點的,如果資料比較少的話,用那種應該影響不大,我也不太清楚,還不是我目前能力所能**的。

var arr = [49, 38, 65, 97, 76, 13, 27, 49];

console.log('arr:' + arr); //列印排序前的陣列

quicksort(arr, 0, arr.length-1);

console.log('sortarr:' + arr); //列印排序後的陣列

function quicksort(arr,low,high)

while (end > start && arr[start] <= key) start++;

if (arr[start] > key)

}console.log('newarr:' + arr); //每次排完列印一次,顯示幾條就說明排了幾次

//排完後start等於end,即基準值在此次排序中的最終位置

if (start > low+1) this.quicksort(arr, low, start - 1);

//如果start小等於low+1,說明左側只有0或者1個數字,不需要再進行排序

if (end < high-1) this.quicksort(arr, end + 1, high);

//同理可得

排序了4次,排序結果與最終結果均與書上一致。

js 快速排序

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

JS 快速排序

var arr 90,80,79,60,5,4,31,2,9 1 取基準值的下標 index math.floor arr.length 2 2 取基準值 midvalue arr.splice index,1 3 根據基準值分左右 定義兩個子集,接收資料 var left var right 4 ...

快速排序JS

思想 建立兩個陣列left right 取乙個基準值可以陣列中任一元素 下面取了陣列的中間元素並且從陣列中剝離出來 將陣列中的元素與基準值比較 小於基準值的放進左邊 left陣列 大於基準值的放進右邊right陣列 重複 步驟2 3 var arr 3,4,2,6,5,8,9,10,16,13 le...