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

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

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

题目描述:

知识点:排序

思路:用sort函数排序

时间复杂度是O(NlogN)。空间复杂度是O(N)。

C++代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>

using namespace std;

struct student{
	int number;
	char name[9];
	int score;
};

int N, C;
vector<student> 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++解题报告:

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值