文章目录
一、sort()函数的说明
- 排序函数 sort(),其时间复杂度平均为O(N·lg(N)),使用时需声明其头文件
#include <algorithm>
及using namespace std
. - STL中的sort()并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动选用合适的排序方法。
二、sort()函数的使用方法
sort(a+m, a+n); //(a+m, a+n) 范围内的元素进行排序
sort(a+m, a+n, cmp); //cmp 是函数或仿函数,是sort的排序规则,默认 operator<
1、自定义排序准则(常用)
(1)简单数组排序
sort() 函数默认从小到大排序,但也可以自定义排序准则(比较常用),如:
#include <iostream>
#include <algorithm>
using namespace std;
int a[100] = {
55,13,84,47,21,56,77,44,92,10};
bool mycmp(int a, int b){
return a > b; //从大到小,输出结果:92 84 77 56 55 47 44 21 13 10
//return a < b; //从小到大,输出结果:10 13 21 44 47 55 56 77 84 92
//return a % 10 > b % 10; //按照每个数的个位进行从大到小排序,输出结果:47 77 56 55 84 44 13 92 21 10
}
int main(){
sort(a, a+10, mycmp); //数组名 + 数字的本质是指针操作
for(int i=0; i<10; i++)
cout << a[i] << " ";
return 0;
}
(2)结构体排序
结构体一般不能比较大小,但可以利用 sort() 对结构体排序,如:
#include <iostream>
#include <algorithm>
using