快速排序(含模板)

2021-10-09 22:34:38 字數 1374 閱讀 4452

快速排序是在未排序陣列中找乙個基準(最左邊的數),將所有比基準數小的數放在基準數左邊,大的數放在基準數右邊。最後在基準數左邊用同樣的方法,右邊用同樣的方法直到為順序集合

演算法流程:

遞迴引數:左,右邊界

終止條件:左邊界大於右邊界

單次過程

以左邊界為基準點以左邊界為左指標起始點,右邊界為右指標起始點

先移動右指標,直到找到比基準點小或者遇到左指標停止

移動左指標,直到找到比基準點大或者遇到右指標停止

如果左右指標未相遇,則交換左右指標的兩個數

以此類推直到左右指標相遇

交換基準點和此時的左右指標所指的值,完成區域性排序

#include

using namespace std;

int a[

101]

,n;//待排序數

void

quicksort

(int left,

int right)

;int

main()

quicksort(1

,n);

for(

int i=

1;i<=n;i++

)return0;

}void

quicksort

(int left,

int right)

//temp為選定基準

int temp = a[left]

;int i = left;

int j = right;

int t;

while

(i!=j)

//移動左指標,直到找到比基準大

while

(i<=temp)

//兩指標未相遇時交換

if(i}//將最終相遇點與基準交換

a[left]

= a[i]

; a[i]

= temp;

//繼續往左塊和右塊排序,直到最終為順序集合

quicksort

(left,i-1)

;quicksort

(i+1

,right)

;}

void

quick_sort

(int q,

int l,

int r)

quick_sort

(q,l,j)

;quick_sort

(q,j +

1,r)

;}

排序 快速排序模板

以某個記錄 元素 為界 該記錄稱為支點或樞軸 將待排序列分成兩部分 一部分 所有記錄的關鍵字大於等於支點記錄的關鍵字 另一部分 所有記錄的關鍵字小於支點記錄的關鍵字 演算法描述 1 任取待排序記錄序列中的某個記錄 例如取第乙個記錄 作為基準 樞 按照該記錄的關鍵字大小,將整個記錄序列劃分為左右兩個子...

快速排序 模板

說明 經過本函式處理後,陣列itemarray中元素滿足prulefunc itemarray itemr itemarray iteml 為true,其中itemr iteml template t void quicksort itemarray,int iteml,int itemr,bool...

模板 快速排序

排序演算法可以說是從語言步入演算法的第一道坎了,其中最有代表性的莫過於快排。這裡模擬庫函式自帶sort的呼叫方式,寫起來相當自然清爽。樸素快速排序演算法的複雜度最好為o nlogn 最壞時能達到o n include include include include include include d...