美文网首页
A1028 List Sorting (25分)

A1028 List Sorting (25分)

作者: km15 | 来源:发表于2020-01-24 13:46 被阅读0次

考察:多重排列规则

learn && wrong:
1、非递减--,如何strcmp+不等式表示,非递减果然是递增一个变形,
从小到大,用小于号,因为a < b,也就是左小右大;
从大到小,用大于号,因为a > b,也就是右大左小
2、为什么字符比较需要单独拿出来,sort函数的机制是什么

3、优化:以及输出是可以只有一个的,分别三个排序

题目要求:
C = 1,按ID递增排列
C = 2,按name非递减排列
C = 3,按grade非递减排列
注意:如果有相同的名字或分数,则按ID递增排列

编程思想:
1、编写三个cmp,按不同要求来,
得出序号也集成在一个if中
2、根据输入的C来判断走哪一个

*/

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

struct student {
    char id[7];
    char name[10]; //名字
    int grade; //分数
}stu[100005];

bool cmp1(student a, student b) {
    return strcmp(a.id, b.id) < 0;  //按iD递增排列
}

bool cmp2(student a, student b) {
    int s = strcmp(a.name, b.name);
    if (s != 0) return s < 0;
    else return strcmp(a.id, b.id) < 0;
}
    
    /*、
if (a.name != b.name) return strcmp(a.name, b.name) < 0; // 按名字非递减排列
    else return strcmp(a.id, b.id) < 0; 


//名字相同,按id递增排列  //(!!!)大于号错了,非递减,非递增是什么,以及strcmp + 大于号应该是递减的,如果理解大于号,小于号呢,前面大于后面,是大于号,前面小于后面,是小于号->所以,递增,是小于号
}//(!!!)一个样例错了

*/
bool cmp3(student a, student b) {
    if (a.grade != b.grade) return a.grade < b.grade; //按成绩非递减排列,即递增
    else return strcmp(a.id, b.id) < 0; //名字相同,按id递增排列
}

int main()
{
    int n, c;  //n是输入的人数,c是按什么要求排列
    cin >> n >> c;
    for (int i = 0;i < n;i++) {
        cin >> stu[i].id >> stu[i].name >> stu[i].grade;
    }

    if(c == 1) {
        sort(stu, stu + n, cmp1);
        int r = 1;
        for (int i = 0;i < n;++i) {
            cout << stu[i].id <<" "<< stu[i].name <<" "<< stu[i].grade << endl;
        }
    }
    else if (c == 2) {
        sort(stu, stu + n,cmp2);
        
        for (int i = 0;i < n;++i) {
            cout << stu[i].id << " " << stu[i].name << " " << stu[i].grade << endl;
        }
    }
    else {
        sort(stu, stu + n, cmp3);
        for (int i = 0;i < n;++i) {
            cout << stu[i].id << " " << stu[i].name << " " << stu[i].grade << endl;
        }
    }

    //(!!!)以及输出是可以只有一个的,分别三个排序
    return 0;
}

相关文章

网友评论

      本文标题:A1028 List Sorting (25分)

      本文链接:https://www.haomeiwen.com/subject/mnpcthtx.html