题目要求是输入一堆整数,对这些数去重并从小到大排序。
先去重再排序不太现实,太慢了,考虑在输入数据的过程中先排好序。
由于给定数据的数量最多只有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; }