pair排序
//声明
pair<int,int>p[10005];
//创建pair变量
p[i]={x,y};
//引用pair中的元素
p[i].first
p[i].second
//排序
sort(p+1,p+n+1);
//会自动按pair中的first升序排序,当first值相同时按second升序排序
//等价于
bool cmp(pair<int,int>a,pair<int,int>b){
if(a.first==b.first) return a.second<b.second;
return a.first<b.first;
}
结构体排序
//声明结构体类型及定义变量
struct node{
int x;
int y;
}a[10005];
//引用结构体内的元素
a[i].x
a[i].y
//元素排序
//1 cmp函数
bool cmp(node &a,node &b){
if(a.x==b.x) return a.y<b.y; //如果不这样写,有可能第二维数据不是有序的,因此和用pair排序的结果不一样
return a.x<b.x;
}
sort(a+1,a+n+1,cmp);
//2 重载小于号
struct node{
int x;
int y;
bool operator < (const node &b) const{
if(x==b.x) return y<b.y; //如果不这样写,有可能第二维数据不是有序的,因此和用pair排序的结果不一样
return x<b.x;
}
}a[10005];
sort(a+1,a+n+1);
时间复杂度
都是O(nlogn)