数据结构与算法题目集7-37——模拟EXCEL排序

我的数据结构与算法题目集代码仓:https://github.com/617076674/Data-structure-and-algorithm-topic-set

原题链接:https://pintia.cn/problem-sets/15/problems/864

题目描述:

数据结构与算法题目集7-37——模拟EXCEL排序_第1张图片

知识点:排序

思路:用sort函数排序

时间复杂度是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++解题报告:

数据结构与算法题目集7-37——模拟EXCEL排序_第2张图片

 

你可能感兴趣的:(数据结构与算法题目集)