题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1

#include <iostream>
#include <algorithm>
using namespace std;
struct stu {//自定义结构体
    string name;
    int grade;
};
int descendCmp(stu a, stu b) {
    //注意,ab等值时不交换,在cmp返回时要去除==判断,否则报错
    //此时如果两个元素相等,则都返回false -> 相当于不用交换
    return a.grade > b.grade;
}
int ascendCmp(stu a, stu b) {
    return a.grade < b.grade;
}
int main() {
    int n, flag;
    while (cin >> n >> flag) {
        stu* student = new stu[n];
        for (int i = 0; i < n; i++) {
            cin >> student[i].name >> student[i].grade;
        }
        switch (flag) {
            case 0:
				//stable_sort()使用归并,是稳定的;sort()使用快排,不满足稳定要求
                stable_sort(student, student + n, descendCmp); break;
            case 1:
                stable_sort(student, student + n, ascendCmp); break;
            default: break;
        }
        for (int i = 0; i < n; i++) {
            cout << student[i].name << " " << student[i].grade<<endl;
        }
        delete []student;
    }
    return 0;
}

全部评论

相关推荐

03-03 19:08
已编辑
电子科技大学 C++
虚闻松声:简历还是不错。 说两点 1. 正确书写专有名词。如MySQL、Python等。 2. 清晰展示项目内容。最好以列表形式分大的模块展示。 建议就是,1. 刷完 hot100 2. 适当结合AI CV、求职等咨询,欢迎私信交流。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务