算法提高 前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 }
?