题目要求是输入一堆整数,对这些数去重并从小到大排序。

先去重再排序不太现实,太慢了,考虑在输入数据的过程中先排好序。
由于给定数据的数量最多只有1000,且这些数的大小范围是1~1000,因此直接上数组用类似于计数排序的手段,牺牲空间换时间,简单粗暴。

#include <stdio.h>
#include <string.h>

int cnt[1001];

int main()
{
    int n, x;

    while (scanf("%d", &n) != EOF) {
        memset(cnt, 0, sizeof(cnt));

        for (int i = 0; i < n; ++i) {
            scanf("%d", &x);
            cnt[x] = 1;
        }

        for (int i = 1; i <= 1000; ++i)
            if (cnt[i]) printf("%d\n", i);
    }

    return 0;
}