sort函數_C++


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

  想要使用 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 }

  然后排序函數要寫成這樣

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

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

 

  如果我們想帶着其它數據進行排序,比如按順序給出一些數,然后從小到大輸出,並且輸出時帶上輸入時的順序

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

  那么我們開一個記錄類型,num 代表編號,val 代表值,然后進行排序

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 小的排在前面

  如果我們要以 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM