1.sort简介
sort函数包含在头文件<algorithm>中,在使用前需要#include<algorithm>或使用万能头文件。
sort是C++标准库中的一个函数模板,用于对指定范围内的元素进行排序。
sort算法使用的是快速排序(QuickSort)或者类似快速排序的改进算法,具有较好的平均时间复杂度,一般为o(nlogn)。
2.sort用法
sort(起始地址,结束地址的下一位,*比较函数)若没有比较函数则默认从大到小排序。
测试代码
#include<bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int a[1000];
int n;
cin >> n;//读取数组大小
for (int i = 1; i <= n; i++) {//读取元素
cin >> a[i];
}
sort(a + 1,a + n + 1);/*第一个参数为a[1]的地址, 第二个参数为a[n + 1]
的地址;[1,n+1)左闭右开。
*/
for (int i = 1; i <= n; i++) {
cout << a[i] << ' ';
}
return 0;
}
测试结果
3.自定义比较函数
sort默认使用小于号进行排序,如果想要自定义比较规则,可以传入第三个参数,可以是函数或lambda表达式。
测试代码
#include<bits/stdc++.h>
using namespace std;
bool cmp(const int &u,const int &v){//自定义的比较函数
return u > v;
}
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
vector<int> v = {5,1,3,9,11};
//对数组进行排序
sort(v.begin(), v.end(),cmp);
//输出
for (int i = 0; i <v.size(); i++)
cout << v[i] << ' ';
return 0;
}
测试结果
结构体可以将小于号重载后进行排序,当然用前面的方法也是可行的。