题目描述
期中考试之后,老师要对分数从高到低进行排序。老师请你排序,试着用多种方法解决,并考虑哪种排序速度快。
输入
输入数据有多组,每组最前面有一个n,表示有n个待排序的分数,接着是n个分数。每个分数都是小于等于100的整数。
处理到文件结尾。
输出
对于每组数据,输出排序后的序列。相邻两个分数之间用一个空格隔开。
样例输入
4 50 60 70 80
3 100 70 90
样例输出
80 70 60 50
100 90 70
提示
输出每组数据后面没有多于的空格
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
bool complare (int a,int b){
return a>b;
}
int main(){
int n,i,j;
int a[10000];
while(~scanf("%d",&n)){
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n,complare);
for(j=0;j<n;j++){
if(j==0){
printf("%d",a[j]);
}else{
printf(" %d",a[j]);
}
}
printf("\n");
}
return 0;
}
排序本来用的冒泡 超时了。。。
就用c++的sort函数
从低到高排序就sort(a,a+n)【默认从小到大】
从高到低要在第三个参数上做文章
需要加入一个比较函数 complare(),此函数的实现过程是这样的
bool complare(int a,int b)
{
return a>b;
}
最后就是上面代码的那样:sort(a,a+n,complare);