要调用sort函数需包含头文件<algorithm>,可以直接对数组进行排序,时间复杂度为O(nlogn).这个函数可以传2个或3个参数,第一个参数是待排序的首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间为[a,b).对于a[n](0..n-1)只需写sort(a,a+n)即可实现对a[0]-a[n-1]的排序,且默认升序。
若想改变数组排序方式,即自己决定升降。可以引入第三个参数-比较函数。这个函数需自己定义,返回值为bool类型,想实现降序排序,可自定义函数cmp如下:
bool cmp(int a,int b){
return a>b;(若为升序,则应写为:return a<b;)
}
调用sort(a,a+n,cmp)即可实现对a数组的降序排序。
(2)对结构体的排序:
struct num{
int x;
int y;
}s[100];
bool cmp(num a,num b){
if(a.x!=b.x)return a.x>b.x; //a.x<b.x 升序
return a.y>b.y; //a.y<b.y 升序
}
调用sort(s,s+100,cmp)即可实现对含有两个关键字的结构体s的降序排序。