题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

struct student {
  public:
    string name;
    int grade;
    int order;
    student() = default;
    student(string& a, int b, int c): name(a), grade(b), order(c) {}
};

bool compare_1(const student& a, const student& b) {
    return a.grade < b.grade;
}

bool compare_2(const student& a, const student& b) {
    return a.grade > b.grade;
}


int main() {
    int n;
    cin >> n;
    int way;
    cin >> way;
    vector<student> num;
    for (int i = 0; i != n; ++i) {
        string temp;
        int t;
        cin >> temp >> t;
        student te(temp, t, i);
        num.push_back(te);
    }
    if (way == 0)
        sort(num.begin(), num.end(), compare_2);
    else
        sort(num.begin(), num.end(), compare_1);


    for (int i = 0; i != n - 1; ++i) {
        for (int j = 0; j != n - 1 - i; ++j) {
            if (num[j].grade == num[j + 1].grade) {
                if (num[j].order > num[j + 1].order) {
                    student a = num[j];
                    num[j] = num[j + 1];
                    num[j + 1] = a;
                }
            }
        }
    }

    for (auto& i : num) {
        cout << i.name << " " << i.grade << endl;
    }

}

// 64 位输出请用 printf("%lld")

写一个结构体,三个成员,名字,成绩,和次序,然后在排序完以后,要根据次序重新对相同的值进行位置上的调整

全部评论

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务