sort函數_C++

  C++的STL庫裏有一個 sort 函數,它就是隨機化快速排序,速度比快速排序還快,由於它克服了逆序時被卡成O(n2)的狀況html

  想要使用 sort 首先要在頭文件裏申明 #include<algorithm> 算法文件算法

 

  好比咱們有一個數組 a,對它的 1-n 進行升序排序,也就是從小到大數組

1     sort(a+1,a+n+1);

 

 

  若是要對它進行降序排序,也就是從大到小,則須要手寫一個比較器 cmp,它是一個 bool 類型的函數函數

1 bool cmp(int x,int y)
2 {
3     return x>y;
4 }

  而後排序函數要寫成這樣spa

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

  後面加上一個自定義的比較器code

 

  若是咱們想帶着其它數據進行排序,好比按順序給出一些數,而後從小到大輸出,而且輸出時帶上輸入時的順序htm

1 struct data
2 {
3     int num,val;
4 }
5     a[100];

  那麼咱們開一個記錄類型,num 表明編號,val 表明值,而後進行排序blog

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

  重點是比較器,傳入的類型是咱們定義的 data 類型,而後比較裏面的 val 值,最終由於記錄類型的特色排序交會時會總體交換排序

1 bool cmp(data x,data y)
2 {
3     return x.val<y.val;
4 }

  這樣排序出來後在 val 值相等時是按照 num 小的排在前面get

  若是咱們要以 num 大的排在前面,只需在比較時多一個條件

1 bool cmp(data x,data y)
2 {
3     return ((x.val<y.val)||((x.val==y.val)&&(x.num>y.num)));
4 }

 

 

 

版權全部,轉載請聯繫做者,違者必究

聯繫方式:http://www.cnblogs.com/hadilo/p/5932395.html

相關文章
相關標籤/搜索