解析:  不能用一般的排序方法,不仅时间跟不上,内存也跟不上。需要一种简单快捷的排序方式。

   要排序的数的范围始终在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 }