我的数据结构与算法题目集代码仓:https://github.com/617076674/Data-structure-and-algorithm-topic-set
原题链接:https://pintia.cn/problem-sets/15/problems/864
题目描述:
知识点:排序
时间复杂度是O(NlogN)。空间复杂度是O(N)。
C++代码:
#include
#include
#include
#include
using namespace std;
struct student{
int number;
char name[9];
int score;
};
int N, C;
vector students;
bool cmp(student s1, student s2);
int main(){
scanf("%d %d", &N, &C);
for(int i = 0; i < N; i++){
int number;
char name[9];
int score;
scanf("%d %s %d", &number, name, &score);
student stu;
stu.number = number;
strcpy(stu.name, name);
stu.score = score;
students.push_back(stu);
}
sort(students.begin(), students.end(), cmp);
for(int i = 0; i < N; i++){
printf("%06d %s %d\n", students[i].number, students[i].name, students[i].score);
}
return 0;
}
bool cmp(student s1, student s2){
if(C == 1){
return s1.number < s2.number;
}else if(C == 2){
int cmpName = strcmp(s1.name, s2.name);
if(cmpName == 0){
return s1.number < s2.number;
}else{
return cmpName < 0;
}
}else{
if(s1.score == s2.score){
return s1.number < s2.number;
}else{
return s1.score < s2.score;
}
}
}
C++解题报告: