快速排序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 */