利用sort排序数组a
1. sort默认由小到大排序
sort(a+1,a+n+1); //对数组 1~n 之间进行排序
sort(a,a+n); //对数组 0~n-1 之间进行排序
2. sort自定义排序方式
sort(a+1,a+n+1,cmp);
bool cmp(int x,int y) //由大到小排序
{
return x>y;
//if(x>=y) return 1; 现有x和y位置不变
//if(x<y) return 0; 交换x和y的位置
}
结构体排序
当我们使用sort对结构体进行排序时,我们要首先自己编写一个排序函数,在排序函数中,规定好排序的优先顺序;
1.cmp
struct Num
{
int x,y;
};
bool cmp(Num a,Num b) //a b均为结构体类型
{
if(a.x!=b.x){return a.x>b.x;}//第一优先级:按照x从大到小排序;
else //当a和b相同时,使用第二优先级排序;
{return a.y>b.y;}//第二优先级,按照y从大到小排序;
}
然后就可以用sort(a+1,a+n+1,cmp)来排序了
2.重载运算符
struct node
{
int w;
bool operator <(const node a)const //记住!!!
{
return w<a.w; //按照w从小到大
// return w>a.w; 按照w从大到小
}
}e[maxn];
priority_queue<node> q; //此时的优先队列是按结构体的w值,从大到小排列
sort(e,e+n);//按照结构体的w值,从小到大进行排序