题目大意
Excel 可以根据任何列对记录进行排序。现在你应该模仿这个功能。
解题思路
- 使用结构体,每一个结构体保存一行数据
- 根据使用的排序规则选择合适的自定义排序算法
代码
#include<bits/stdc++.h>
using namespace std;
struct recode
{
int id;
string name;
int grade;
};
bool cmp1(recode re1,recode re2) {
return re1.id < re2.id;
}
bool cmp2(recode re1,recode re2) {
if (re1.name < re2.name) {
return true;
}
else if (re1.name == re2.name) {
return re1.id < re2.id;
}
else {
return false;
}
}
bool cmp3(recode re1, recode re2) {
if (re1.grade < re2.grade) {
return true;
}
else if (re1.grade == re2.grade) {
return re1.id < re2.id;
}
else {
return false;
}
}
int main() {
int n, c;
cin >> n >> c;
vector<recode> vec(n);
for (int i = 0; i < n; i++) {
cin >> vec[i].id >> vec[i].name >> vec[i].grade;
}
if (c == 1) {
sort(vec.begin(), vec.end(), cmp1);
}
else if (c == 2) {
sort(vec.begin(), vec.end(), cmp2);
}
else {
sort(vec.begin(), vec.end(), cmp3);
}
for (int i = 0; i < n; i++) {
printf("%06d", vec[i].id);
cout <<' ' << vec[i].name << ' ' << vec[i].grade << endl;
}
return 0;
}