codeup27956 成绩排序
时空限制 1000ms/128MB
题目描述
某班同学参加了某次数学考试,一共有n个同学,每个同学都取得了较好的成绩,马老师想查看同学们的成绩,需要按成绩由高到低排序,请你设计一个程序,完成这一功能。
输入
共2行 。
第一行参加的人数正整数n,0<n<=100。
第二行为成绩,0<=成绩<=150,每个成绩为整数。
输出
输出一行,n个整数,每个整数之间用空格隔开,最后一个数后没有空格。
样例输入
3
91 93 94
样例输出
94 93 91
分析
数据量n不大,且每个数据都在[0,150]之间,可以用所有的排序方法进行排序。下面只列举了选择排序。
代码
#include<iostream> //O(n^2) 不稳定
using namespace std;
const int N = 10005;
int n,a[N];
int main(){
cin>>n;
for (int i=1; i<=n; ++i) cin>>a[i];
//把[i,n]范围内最小的数与第i个位置上的数交换
for (int i=1; i<n; ++i){
int k=i;
for (int j=i+1; j<=n; ++j)
if (a[j]>a[k]) k=j; //记录此趟最大值位置
if (k!=i) { int t=a[i]; a[i]=a[k]; a[k]=t; }
}
for (int i=1; i<n; ++i) cout<<a[i]<<" ";
cout<<a[n]<<endl;
return 0;
}

本文介绍了一个简单的成绩排序程序,该程序使用选择排序算法对学生的数学考试成绩进行降序排列,并输出排序后的结果。

2922

被折叠的 条评论
为什么被折叠?



