顾名思义,sort就是用来排序的函数, 它根据具体情形使用不同的排序方法, 效率较高。 一般来说, 不推荐使用C语言中的qsort函数, 原因是qsort用起来比较烦琐, 涉及很多指针的操作。而且sort在实现中规避了经典快速排序中可能出现的会导致实际复杂度退化到O(n2) 的极端情况。
sort函数的使用必须加上头文件
#include<algorithm>
using namespace std;
使用方式:
sort(首元素地址(必填), 尾元素地址的下一个地址(必填), 比较函数(非必填)};
如果不写比较函数,则默认对前面给出的区间进行递增排序。
例如:
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int a[6] = {9, 1, 4, 8, 3, 7};
//将a[0]~a[3]从小到大排序
sort(a, a+4);
for(int i=0;i<6;i++){
cout<<a[i]<<" ";
}
return 0;
}
运行之后可以得到下面的结果, 可以试若理解一下(特别注意理解“尾元素地址的下一 个地址”)。输出结果:
1 4 8 9 3 7
sort的第三个可选参数就是 compare函数(一般写作cmp函数).
如果想要从大到小来排序,则要使用比较函数cmp来 ”告诉" sort何时要交换元素(让 元素的大小比较关系反过来)。还是上面那个例子,这里比较的元素是int类型,可以这样写:
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a int b) {
return a > b; //可以理解为当a > b时把a放在b前面
}
int main() {
int a[6] = {9, 1, 4, 8, 3, 7};
//将a[0]~a[3]从小到大排序
sort(a, a+4, cmp);
for(int i=0;i<6;i++){
cout<<a[i]<<" ";
}
return 0;
}
输出结果:
9 8 4 1 3 7
参考书籍:《算法笔记》–胡凡