结构体排序(sort)

8 篇文章 0 订阅
6 篇文章 1 订阅

嘿嘿

个人比较喜欢用结构体来存两个有关联的变量,而不喜欢用二维数组,因为很容易出错,所以,想写一篇关于结构体排序的博客哈哈哈哈哈✪ ω ✪

头文件

我最经常用的是sort排序,,,这里头文件用的是

#include<algorithm>

使用方法

sort()函数的最常用,就是数组的排序,但是它也可以用在结构体排序上面

1.我们的结构体命名为一个结构体数组

struct Student {
    char name[11];
    int solve;
    int time;
}p[10000];

2.之后这样引用

int main()
{
    sort(p,p+n,cmp);//在主函数中调用,结构体排序;
}

3.具体的cmp函数为自己写的,像这个例子里,//按照题数,再罚时间,再名字(名字按字典序排列)

bool cmp(const Student& a, const Student& b)
{
    if (a.solve != b.solve)
     { 
        if (a.solve > b.solve)
            return true;
        else
            return false;
    }
    else if (a.time != b.time)
           return a.time < b.time;
    else
          return (strcmp(a.name, b.name) < 0);
}

完整的案例代码

可以复制粘贴过去跑一跑,学会了也可以去牛客或者杭电上面找题目写哈哈哈哈哈哈哈哈哈哈哈

#include<iostream>
#include<algorithm>
using namespace std;
struct Student {
    char name[11];
    int solve;
    int time;
}p[10000];
bool cmp(const Student& a, const Student& b)
{
    if (a.solve != b.solve)
     { 
        if (a.solve > b.solve)
            return true;
        else
            return false;
    }
    else if (a.time != b.time)
           return a.time < b.time;
    else
          return (strcmp(a.name, b.name) < 0);
}
int main()
{
    cin>>n;
    for(int i=0;i<n;i++)
      cin>>p[i].name>>p[i].solve>>p[i].time;
    sort(p,p+n,cmp);//在主函数中调用,结构体排序;
    for(int i=0;i<n;i++)
      cout<<p[i].name;
    return 0;
}
//按照题数,再罚时间,再名字(名字按字典序排列)

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andy℡。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值