codeup27956 成绩排序

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

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值