算法提高 前10名
时间限制:1.0s 内存限制:256.0MB
问题描述
数据很多,但我们经常只取前几名,比如奥运只取前3名。现在我们有n个数据,请按从大到小的顺序,输出前10个名数据。
输入格式
两行。
第一行一个整数n,表示要对多少个数据
第二行有n个整数,中间用空格分隔。表示n个数据。
第一行一个整数n,表示要对多少个数据
第二行有n个整数,中间用空格分隔。表示n个数据。
输出格式
一行,按从大到小排列的前10个数据,每个数据之间用一个空格隔开。
样例输入
26
54 27 87 16 63 40 40 22 61 6 57 70 0 42 11 50 13 5 56 7 8 86 56 91 68 59
54 27 87 16 63 40 40 22 61 6 57 70 0 42 11 50 13 5 56 7 8 86 56 91 68 59
样例输出
91 87 86 70 68 63 61 59 57 56
数据规模和约定
10<=n<=200,各个整数不超出整型范围
常见的排序问题,用一般的冒泡,选择排序等都可以解决。
1 #include<stdio.h> 2 main(){ 3 int N; 4 scanf("%d",&N); 5 int a[N]; 6 for(int i=0;i<N;i++){ 7 scanf("%d",&a[i]); 8 } 9 /*冒泡*/ 10 for(int i=0; i<N-1; i++){ 11 for(int j=0; j<N-1-i; j++){ 12 if(a[j]<a[j+1]){ 13 int t = a[j]; 14 a[j] = a[j+1]; 15 a[j+1] = t; 16 } 17 } 18 } 19 /*输出*/ 20 for(int i=0; i<10; i++){ 21 printf("%d ", a[i]); 22 } 23 }