考试结束了,全班同学的分数都出来了。老师需要对分数做一次排序,看看从高到低,分数的排列是怎样的。 输入格式: 第一行是一个n,表示班级同学的人数,1<=n<=500000。 第二行开始有n个分数,0<=分数<=100,分数都是整数,没有零点五分。 输出格式: 输出排序后的分数,按照从大到小排列,相同的分数排在一起,每两个分数之间间隔一个空格。
时间: 2023-05-30 16:04:44 浏览: 62
算法1
用数组存储分数,然后直接使用sort函数排序即可。
C++ 代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 500010;
int a[N];
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
cin >> a[i];
sort(a, a + n, greater<int>()); //从大到小排序
for(int i = 0; i < n; i++)
cout << a[i] << ' ';
cout << endl;
return 0;
}
算法2
使用计数排序,先统计每个分数出现的次数,然后从高到低输出即可。
C++ 代码
#include <iostream>
using namespace std;
const int N = 101;
int cnt[N]; //cnt[i]表示分数为i的人数
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
{
int score;
cin >> score;
cnt[score]++;
}
for(int i = 100; i >= 0; i--) //从高到低输出
for(int j = 0; j < cnt[i]; j++)
cout << i << ' ';
cout << endl;
return 0;
}
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)