洛谷 B2159:成绩排序 ← 结构体排序
● 按结构体某一字段对结构体数组进行排序:https://blog.csdn.net/hnjzsyjyj/article/details/120184972
·
【题目来源】
https://www.luogu.com.cn/problem/B2159
【题目描述】
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
【输入格式】
第一行为 n(0<n<20),表示班里的学生数目。
接下来的 n 行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过 20,成绩为一个不大于 100 的非负整数。
【输出格式】
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。
【输入样例】
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
【输出样例】
Joey 92
Hanmeimei 90
Kitty 80
Tim 28
【数据范围】
0<n<20
【算法分析】
● 按结构体某一字段对结构体数组进行排序:https://blog.csdn.net/hnjzsyjyj/article/details/120184972
【算法代码】
#include <bits/stdc++.h>
using namespace std;
const int maxn=25;
struct Student {
string name;
int score;
} stu[maxn];
bool down(Student u,Student v) {
if(u.score==v.score) return u.name<v.name;
return u.score>v.score;
}
int main() {
int n;
cin>>n;
for(int i=1; i<=n; i++) {
cin>>stu[i].name>>stu[i].score;
}
sort(stu+1,stu+1+n,down);
for(int i=1; i<=n; i++) {
cout<<stu[i].name<<" "<<stu[i].score<<endl;
}
return 0;
}
/*
in:
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
out:
Joey 92
Hanmeimei 90
Kitty 80
Tim 28
*/
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/120184972
https://blog.csdn.net/hnjzsyjyj/article/details/156479934
更多推荐

所有评论(0)