解析: 不能用一般的排序方法,不仅时间跟不上,内存也跟不上。需要一种简单快捷的排序方式。
要排序的数的范围始终在1和100之间,而最终的结果是几堆数的排列。不妨设一个数组表示每个数
出现的次数,最后按1到100依次输出就行,如果没有出现就不输出。
这难道是传说中的桶排序?
1 #include <stdio.h> 2 #define N 101 3 int main() 4 { 5 int n, i, a, t; 6 int arr[N]; 7 while(scanf("%d", &n) == 1 && n){ 8 for(i = 0; i < N; i++) 9 arr[i] = 0; 10 for(i = 0; i < n; i++){ 11 scanf("%d", &a); 12 arr[a]++; 13 } 14 for(i = N - 1; i >= 0; i--) 15 if(arr[i] != 0) 16 break; 17 arr[i]--; 18 t = i; 19 for(i = 0; i < N; i++) 20 while(arr[i]){ 21 printf("%d ", i); 22 arr[i]--; 23 } 24 printf("%d\n", t); 25 } 26 return 0; 27 }