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