sort简介
头文件为algorithm,其排序方式类似于快速排序,比冒泡选择之类的小杂鱼高级。
函数调用形式为:
sort(参数a,参数b,参数c);
参数a是待排序数组的起始位置,参数b是待排序数组的末位置,参数c是一个函数,决定排序的规则,不写默认从小到大排序。
对于这么一个待排序的数组a:
代码语言:javascript复制int a[6]={1,3,6,2,4,5};
我们有三种方式排序。
一、默认排序
直接用sort,就是从小到大排序。
代码语言:javascript复制sort(a,a 6);
二、参数排序
写入第三个参数。
从小到大排序:
代码语言:javascript复制sort(a,a 6,less<int>());
从大到小排序:
代码语言:javascript复制sort(a,a 6,greater<int>());
三、自定义排序规则
由于sort函数的第三个参数是以函数形式的方式传入,所以,可以自己写函数,定义排序规则。
从大到小排序:
代码语言:javascript复制bool just_a_name(int a,int b)
{
return a>b;
}
sort(a,a 6,just_a_name);
这个功能非常好用,记得总有OJ题目经常要排序学生成绩,科目多,人数也多,要排序结构体数组,登峰造极的是PTA的德才论德才论 坑详解_心 灵 骇 客的博客-CSDN博客
我记得第一次写了两百多行的代码,用的是冒泡排序,死活过不了,后来今天用了sort函数去写,只用了六十多行代码就搞定了。
其中排序结构体数组的sort排序规则函数代码:
代码语言:javascript复制bool compare(score a,score b)
{
if(a.sum!=b.sum)
return a.sum>b.sum;
if(a.de!=b.de)
return a.de>b.de;
return a.id<b.id;
}
sort(a,a i,compare);
四、排序字符数组
代码语言:javascript复制char a[6]="asdfg";
从小到大排序:
代码语言:javascript复制sort(a,a 5,less<char>());
从大到小排序:
代码语言:javascript复制sort(a,a 5,greater<char>());