快速排序sort的用法:(适用于int float double char 。。。)

记得加头文件!

记得加头文件!

记得加头文件!

头文件: #include <algorithm>

 using namespace std ;     // 两行都要写

数组排序:

 #include <algorithm>

 using namespace std;

 int   a[] = {,,,,,,,,,};

 sort(a,a+);   // 如果数组中有n个整数   sort(a,a+n);

 // 结果为:0 1 2 3 4 5 6 7 8 9

 // 如果是 sort(a,a+5),则只对a数组中前五个元素进行排序。。。其他的触类旁通、(自己敲点代码验证一下)

 // 注意:sort函数默认按升序排列

 // 想让按降序排列的话,需要加cmp

 #include <algorithm>

 using namespace std;

 int   a[] = {,,,,,,,,,};
bool cmp(int a,int b)
{
return a> b;
}
sort(a,a+); // 结果为:9 8 7 6 5 4 3 2 1 0 。

结构体排序:

例:

考生的信息包括:考生的准考证号(长度不超过20的字符串)、该生解决的题目总数m、以及这m道题的题号 (题目号由1到M)。

这些信息可以用一个结构体存起来

 struct  Student
{
char str[]; //考生准考证号
int m; // 解决题目总数
int num[]; //存题号
int sum; // 考生的最后得分 }student[];

排序要求:按分数从高 到低输出上线考生的考号与分数,其间用1空格分隔。若有多名考生分数相同,则按他们考号的升序输出。

注意有两个排序要求

1、按分数从高 到低      2、分数相同,则按他们考号的升序

所以cmp可以这样写

 bool  cmp (Student  a, Student  b)  // 注意这里的变量a、b均为 Student类型
{
if (a.sum > b.sum) //1、按分数从高 到低
return true;
if (a.sum == b.sum && strcmp(a.str , b.str < ) //2、分数相同,则按他们考号的升序
return true;
else
return false;
}

/*  If you have any questions, please contact me  */

05-11 21:47