结构体排序 or pair排序 ?

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)

posted @   starlightlmy  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示