排序就乙個基本功,冒泡雖然簡單,但是常常超時,快排又難寫。我自己記錄乙個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...