Sort函数的用法
快速排序sort的用法:(適用于int float double char 。。。)
記得加頭文件!
記得加頭文件!
記得加頭文件!
頭文件: #include <algorithm>?
?using namespace std ; ????// 兩行都要寫
?
數組排序:
1 #include <algorithm> 2 3 using namespace std; 4 5 int a[10] = {9,6,3,0,2,5,8,7,4,1}; 6 7 sort(a,a+10); // 如果數組中有n個整數 sort(a,a+n); 8 9 10 11 // 結果為:0 1 2 3 4 5 6 7 8 9 12 13 // 如果是 sort(a,a+5),則只對a數組中前五個元素進行排序。。。其他的觸類旁通、(自己敲點代碼驗證一下) 14 15 // 注意:sort函數默認按升序排列 16 17 18 // 想讓按降序排列的話,需要加cmp 19 20 #include <algorithm> 21 22 using namespace std; 23 24 int a[10] = {9,6,3,0,2,5,8,7,4,1}; 25 bool cmp(int a,int b) 26 { 27 return a> b; 28 } 29 sort(a,a+10); 30 31 // 結果為:9 8 7 6 5 4 3 2 1 0 。?
結構體排序:
例:
考生的信息包括:考生的準考證號(長度不超過20的字符串)、該生解決的題目總數m、以及這m道題的題號?(題目號由1到M)。
這些信息可以用一個結構體存起來
1 struct Student 2 { 3 char str[30]; //考生準考證號 4 int m; // 解決題目總數 5 int num[20]; //存題號 6 int sum; // 考生的最后得分 7 8 }student[1010];排序要求:按分數從高?到低輸出上線考生的考號與分數,其間用1空格分隔。若有多名考生分數相同,則按他們考號的升序輸出。?
注意有兩個排序要求
1、按分數從高?到低??????2、分數相同,則按他們考號的升序
所以cmp可以這樣寫
1 bool cmp (Student a, Student b) // 注意這里的變量a、b均為 Student類型 2 { 3 if (a.sum > b.sum) //1、按分數從高 到低 4 return true; 5 if (a.sum == b.sum && strcmp(a.str , b.str < 0) //2、分數相同,則按他們考號的升序 6 return true; 7 else 8 return false; 9 }/* ?If you have any questions, please contact me? */
?
轉載于:https://www.cnblogs.com/yoke/p/6695389.html
總結
- 上一篇: 新款福特探险者开卖:30.98万元就能买
- 下一篇: IOT产品线大爆发!OPPO一口气推5款