acm中快速排序的使用

2021-06-21 22:17:33 字數 674 閱讀 3195

排序就乙個基本功,冒泡雖然簡單,但是常常超時,快排又難寫。我自己記錄乙個sort函式的使用,以便自己檢視

msdn中的定義:template

voidsort(ranit first, ranit last); //--> 1)

template

voidsort(ranit first, ranit last, pred pr); //--> 2)

標頭檔案:

#include

using namespace std;

1.預設的sort函式是按公升序排。對應於1)

sort(a,a+n);   //兩個引數分別為待排序陣列的首位址和尾位址

2.可以自己寫乙個cmp函式,按特定意圖進行排序。對應於2)

例如:int cmp( const int &a, const int &b )

sort(a,a+n,cmp);

是對陣列a降序排序

又如:int cmp( const point &a, const point &b )

else

return 0;

}sort(a,a+n,cmp);

是先按x公升序排序,若x值相等則按y公升序排



ACM 快速排序演算法

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

ACM 快速排序模板

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

ACM演算法 排序篇 預設快速排序

如圖 還是上題,除了用氣泡排序外,還可以用快速排序 當複雜度超過百萬數量級,我們就不能用氣泡排序了,應該使用諸如快速排序,歸併排序等排序演算法 他們的複雜度為 o nlogn 如下 includeusing namespace std int main int n int buf 10000 whi...