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