1028 List Sorting
题目大意
给出几行数据,按根据输入的数字c,来对其进行不同的排序
算法思想
- 用sort对vector进行排序,可以很方便的解决此题
- 无特殊点,注意姓名和成绩相等时,按id排,用sort也可以轻易解决
代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct student{//学生信息
string id, name;
int grade;
};
bool cmp1(student a, student b){//比较id
if (a.id != b.id)
return a.id < b.id;
}
bool cmp2(student a, student b){//比较姓名
if (a.name != b.name)
return a.name < b.name;
else
return a.id < b.id;
}
bool cmp3(student a, student b){//比较成绩
if (a.grade != b.grade)
return a.grade < b.grade;
else
return a.id < b.id;
}
int main()
{
int n, c;
cin >> n >> c;
vector<student>record(n);
for (int i = 0; i < n; i++){
cin >> record[i].id >> record[i].name >> record[i].grade;
}
if (c == 1)
sort(record.begin(), record.end(), cmp1);
else if (c == 2)
sort(record.begin(), record.end(), cmp2);
else if (c == 3)
sort(record.begin(), record.end(), cmp3);
for (int i = 0; i < n; i++)
cout << record[i].id << " " << record[i].name << " " << record[i].grade << endl;
return 0;
}