基礎排序演算法 快速排序

2021-07-30 18:29:08 字數 656 閱讀 7373

快速排序大家應該都知道,快速排序是一種不穩定的演算法,運氣差可以降速降到冒泡的速度,運氣好能快到比歸併還快的速度。

首先,快速排序需要選擇乙個x,這個數很多人稱為基準。

剛開始的時候選擇 a[0]當x,讓i=l,j=r 。剛開始的時候l和r分別為最左邊和最右邊。

1、讓j減小,直到遇到 i 或者找到乙個小於等於x的數字a[j]。如果找到了那麼就讓a[i]=a[j],然後 i ++。

2、讓 i 增加,直到遇到j或者這找到乙個比x大的數字a[i]。如果找到了那麼就讓a[j]=a[i],然後 j --。

3、重複上述步驟,直到 i==j。(由於1、2兩步,i、j最後肯定是相等的)

4、讓上述步驟在 區間 [l,j-1] 和 [j+1,r] 繼續進行。

嗯,就是這樣。**如下:

int adjustarray(int s,int l,int r)

{ int i=l,j=r;

int x=s[l];

while(i=x)

--j;

if(i

演算法基礎 快速排序

要求 10分鐘內寫出快排!之前筆試用到排序演算法,總是想用快排但是又不能在規定時間寫出來,歸根到底還是快排的邏輯步驟沒有搞清,所以才導致每次失敗!徹底搞清快排動作邏輯,這樣即使長時間不用也能臨時寫出來!思路 1.就像選擇排序每排一次序排好最小 大值一樣,快速排序每排一次序 會 將中軸值 預設取陣列第...

快速排序演算法 基礎

快速排序的演算法的核心思想是設定乙個值,把比這個值大的往右 扔 比這個值小的往左 扔 陣列快速排序的過程 設定兩個變數i j,排序開始時 i 0,j n 1 n為排序總數 以陣列中的第乙個元素作為比較的值,賦給變數key,即key a 0 首先從j往前搜尋,即從後往前 j 找到第乙個小於key的值a...

演算法基礎 快速排序

分治法 選擇分界點 arr l arr mid arr r 調整陣列區間 左半部分 分界點,右半部分 分界點 遞迴處理左半部分,遞迴處理右半部分 3.遞迴處理 quicksort arr,j 1,r intmain 的驗證 1.第k小的數 題目鏈結 include include using nam...