首页 > 其他 > 详细

排序更新——序

时间:2014-03-31 09:14:20      阅读:389      评论:0      收藏:0      [点我收藏+]

成绩排序,成绩相同,比较姓名,姓名相同,比较年龄。

bubuko.com,布布扣
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
struct E{
        char name[100];
        int age;
        int grade;
    }buff[1000];
bool cmp(E a,E b)
{
    int tmp;
    if(a.grade!=b.grade)return a.grade<b.grade;
    if((tmp=strcmp(a.name,b.name))!=0) return tmp<0;
    else 
        return a.age<b.age;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0;i<n;i++)
        {
            scanf("%s%d%d",buff[i].name,&buff[i].age,&buff[i].grade);
        }
        sort(buff,buff+n,cmp);//定义比较规则
        for(int j=0;j<n;j++)
            printf("%s %d %d\n",buff[j].name,buff[j].age,buff[j].grade);
    }
    printf("\n");

    return 0;
}

//改进:
#include<stdio.h> #include<algorithm> #include<string.h> using namespace std; struct E{ char name[100]; int age; int grade; bool operator <(const E &b)const{//利用C++重载直接定义 < 运算符 int tmp=0; if(grade!=b.grade)return grade<b.grade; if((tmp=strcmp(name,b.name))!=0) return tmp<0; else return age<b.age; } }buff[1000]; int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) { scanf("%s%d%d",buff[i].name,&buff[i].age,&buff[i].grade); } sort(buff,buff+n);//sort 函数只利用 < 运算符进行定序 for(int j=0;j<n;j++) printf("%s %d %d\n",buff[j].name,buff[j].age,buff[j].grade); } printf("\n"); return 0; }
bubuko.com,布布扣

排序更新——序,布布扣,bubuko.com

排序更新——序

原文:http://www.cnblogs.com/Xilian/p/3635018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!