快速排序

#include <stdio.h>
typedef struct student{
    int id,a,b,c,all;
}Stu;
int cmp(const void *a,const void *b)
{
    Stu *p1=(Stu*)a,*p2=(Stu*)b;
    if(p1->all!=p2->all)
    {
        return -(p1->all-p2->all);
    }else
    {
        if(p1->a!=p2->a)
            return -(p1->a-p2->a);
        else
        {
            return p1->id-p2->id;
        }
    }
}
int main()
{
    Stu stu[301];
    int i,n;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d%d",&stu[i].a,&stu[i].b,&stu[i].c);
        stu[i].id=i+1;
        stu[i].all=stu[i].a+stu[i].b+stu[i].c;
    }
    qsort(stu,n,sizeof(Stu),cmp);
    for(i=0;i<5;i++)
    {
        printf("%d %d\n",stu[i].id,stu[i].all);
    }
}
自带的快排,改cmp即可
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务