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  */

 

posted @ 2017-04-11 19:58  gaoyanliang  阅读(421)  评论(0编辑  收藏  举报