NOI / 1.10编程基础之简单排序——03:成绩排序

总时间限制: 1000ms 内存限制: 65536kB
描述
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

输入
第一行为n (0 < n < 20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。
输出
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。
样例输入
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
样例输出
Joey 92
Hanmeimei 90
Kitty 80
Tim 28

#include<bits/stdc++.h>

using namespace std;

int main()
{
	string n[21]; 
	int a[21],b,k,i,j;
	cin>>b;
	for(i=0;i<b;i++)
	{
		cin>>n[i]>>a[i];
	}
	for(i=b-1;i>=1;i--)
	{
		for(j=0;j<i;j++)
		{
			if(a[j]<a[j+1]||a[j]==a[j+1]&&n[j]>n[j+1])
			{
				swap(n[j],n[j+1]);
				swap(a[j],a[j+1]);
			}
		}
	}
	for(i=0;i<b;i++)
	{
		cout<<n[i]<<" "<<a[i]<<endl;
	}
	
	return 0;
}
发布了79 篇原创文章 · 获赞 79 · 访问量 2143

猜你喜欢

转载自blog.csdn.net/dgyshy/article/details/104636187