1. 最近一直在忙課程,每天只能抽空刷幾道leetcode,好久沒看js了...有點慌,但是先抽空把排序演算法啥的寫一遍吧,等忙完作業系統課設再好好複習js.
2. 快速排序演算法思想大概就是設定乙個基準值,根據基準值不斷地交換陣列中前後的元素值,在此過程中目的是把基準值排序到最終的位置,再對基準值位置之前和之後的陣列元素重複以上過程。
(1)給定乙個陣列 arr,首先尋找它的基準值 base.
(2)設定指標 low 指向指定陣列範圍首元素,high 指向指定陣列範圍末尾元素,並設定變數 left 和 right 儲存 low 和 high 的值,因為 low 和 high 之後會變化
(3)只要滿足 low < high,則迴圈進行下面操作:
從 high 開始判斷,如果 arr[ high ] 大於 base 值,且 low < high,則 high--;
若小於 base 值,則 arr[ low ] = arr[ high ],
並且改換為從 low 判斷,如果 arr[ low ] 小於 base 值,且 low < high,則 low++;
若大於 base 值,則 arr[ high ] = arr[ low ]
(4) 迴圈結束時,條件必定是 low === high,此時 low 處或 high 處就是 base 基準值最終的位置
(5)我們對陣列 [ left, low - 1] 和 [ low + 1, right ] 兩個範圍元素遞迴進行 (1)~(4)過程,最終得到的陣列即為排序後陣列。
typescript **:
functionquicksort(arr: number)
const left: number = low, right: number =high;
let base: number =arr[low];
while (low arr[low] =arr[high];
while (low < high && arr[low] arr[high] =arr[low];
}arr[low] =base;
sort(arr, left, low - 1);
sort(arr, low + 1, right);
} const arr_clone: array
=array.from(arr);
sort(arr_clone);
return
arr_clone;
}let wait_sort: number = [15,6,-4,8,99,-45,26,0];
console.log(quicksort(wait_sort));
排序演算法複習 快速排序
基本思想是 1 先從數列中取出乙個數作為基準數pivot。2 分割槽過程,將比這個數大的數全放到pivot的右邊,小於或等於它的數全放到pivot的左邊 3 再對左右區間重複第二步,直到各區間只有乙個數。難點在第2步 找到pivot的位置。pivot理解成中間值,是數列的中間某位置上。pivot左邊...
基礎演算法題複習之一 快速排序
先對排序演算法來個總結 其中不穩定的有 快,選,希,堆 時間複雜度為o nlogn 的有 快,歸,堆,其中後兩者的平均最好和最壞的時間複雜度都一樣,而快速排序的最差複雜度為o n 2 即初始排序為完全逆序的時候,所以快速排序的效能是會受到初始排序的影響的 即穩定時間複雜度又低的最優排序演算法應該是歸...
基礎排序演算法複習
1.計數排序 計數排序的四個步驟 a.初始化c 0 k 為0 b.對於每個元素a i c a i c記錄a中各個元素出現的次數,比如中,c 1 2,c 2 0,c 3 1 c.對於i 1 to k,c i c i c i 1 此時c記錄小於等於i的元素的個數,c 1 2,c 2 2,c 3 3 d....