hdu 1862 cmp函数

排序算法在学生成绩管理系统中的应用
本文探讨了如何使用不同的排序算法对学生成绩进行高效管理,包括学号、姓名和成绩的排序,通过案例分析展示了排序算法在实际应用中的效果。

原题链接 http://acm.hdu.edu.cn/showproblem.php?pid=1862

#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 100005
using namespace std;
struct node
{
    char id[20];
    char name[20];
    int fen;
} a[maxn];
bool cmp1(node x,node y)
{
    if( strcmp(x.id , y.id) < 0 )//学号递增排序
        return true;
    else
        return false;
}
bool cmp2(node x,node y)
{
    if(strcmp(x.name,y.name) < 0 )//名字字典序非递减排序
        return true;
    else if(strcmp(x.name , y.name) == 0)
    {
        if( strcmp(x.id , y.id) < 0 )//当若干学生具有相同姓名时,则按他们的学号递增排序
            return true;
    }
    return false;
}
bool cmp3(node x,node y)
{
    if(x.fen<y.fen) return true;//成绩非递减排序
    else if(x.fen==y.fen)
    {
        if( strcmp(x.id , y.id) < 0 )//当若干学生具有相同成绩时,则按他们的学号递增排序
            return true;
    }
    return false;
}
int main()
{
    int n,c,T=0,i;
    while(scanf("%d%d",&n,&c),n)
    {
        for(i=0; i<n; i++)
            scanf("%s%s%d",a[i].id,a[i].name,&a[i].fen);
        switch(c)
        {
        case 1:
            sort(a,a+n,cmp1);
            break;
        case 2:
            sort(a,a+n,cmp2);
            break;
        case 3:
            sort(a,a+n,cmp3);
            break;
        }

        printf("Case %d:\n",++T);
        for(i=0; i<n; i++)
            printf("%s %s %d\n",a[i].id ,a[i].name ,a[i].fen);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值