题解 | 成绩排序

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

 struct student{
        int num;
        int score;
    }//定义结构体保存学号和成绩;
    bool compare(student lhs,student rhs)
{
    //两种情况下不交换
    //一。学生成绩左小于右
    //二。如果学生的成绩相同,则学号左小于右
    //其余情况都交换
    if (lhs.score<rhs.score)
    return true;
    else if (lhs.score==rhs.score&&lhs.num<rhs.num)
    return true;
    else return false;
}
int main() {
   
    int n;
    cin>>n;
    vector<student> vec1(n);
    for (int i=0; i<n; ++i) {
    cin>>vec1[i].num>>vec1[i].score;
    }
    sort(vec1.begin(), vec1.end(), compare);//用sort对vector进行排序
   //别担心排序不稳定的问题,在compare中可以调整
   for(int i=0;i<n;++i){ 
        cout << vec1[i].num <<' '<<vec1[i].score<<endl;
    }
    return 0;
}

全部评论

相关推荐

我是没经验的毕业生,这啥情况啊会不会是hr在刷kpi
JamesGosli...:字节boss属于是群发了,我都快入职字节了,其他部门还在和我boss打招呼
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务