ACM 快速排序模板

2021-10-10 09:03:17 字數 550 閱讀 9804

快排基本思路應該就是二分+遞迴,從兩側同時(實則先從右往左)往中間找,同時和參變數對比,發現位置顛倒後交換位置,然後通過二分將其一塊一塊的分割開,直到分割到乙個元素位置,即完成了快排。

#includeusing namespace std;

int a[101],n;

void quicksort(int left,int right)

{ int i,j,t,temp;//temp存基準數

if(left>right) return;

temp=a[left];

i=left;

j=right;

while(i!=j)

{ while(a[j]>=temp && i>n;

for(int i=1;i<=n;i++)

cin>>a[i];

quicksort(1,n);

for(int i=1;i<=n;i++)

{ cout《快排應該是最常用的模板了,時間複雜度也比較理想

ps.致敬一波快排的提出者東尼·霍爾(c. a. r. hoare)

ACM 快速排序演算法

每次以陣列第乙個數為基數,從陣列兩端往中間找,小於基數的數放在陣列的左邊,大於它的數放在陣列的右邊,當i j的時候,查詢結束,將基數賦值到這個位置,這個數在陣列中的位置就是這個,確定了。然後從這個數的左邊和右邊開始遞迴,直到所有的數都排完序。時間複雜度 nlog2n 最好,平均 n2 最壞 incl...

排序 快速排序模板

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

快速排序 模板

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