input:
10
20 40 32 67 40 20 89 300 400 15
ouput:
15 20 32 40 67 89 300 400
Methods:
1. 先将这n个数字去重,再进行从小到大排序并输出,可以通过桶排序来解决. 时间复杂度是O(N+M).
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int book[1001];
int n, i, t;
for(i = 0; i < 1001; ++i)
{
book[i] = 0;
}
scanf("%d", &n);
for(i = 0; i < n; ++i)
{
scanf("%d", &t);
book[t] = 1;
}
for(i = 0; i < 1001; ++i)
{
if(1 == book[i])
{
printf("%d ", i);
}
}
system("pause");
return 0;
}
2. 先从小到大排序,比如用冒泡排序,输出结果的时候再去重. 时间复杂度由冒泡排序O(N^2) 和 读入输出都是O(N),因此整个时间复杂度O(N^2+2N),也即O(N^2).
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int book[1001];
int n, i, j, t;
scanf("%d", &n);
for (i = 0; i < n; ++i)
{
scanf("%d", &book[i]);
}
/// Bubble sort
for (i = 0; i < n-1; ++i)
{
for (j = 0; j < n-i; ++j)
{
if (book[j] > book[j+1])
{
t = book[j];
book[j] = book[j+1];
book[j+1] = t;
}
}
}
printf("%d ", book[0]);
for(i = 1; i < n; ++i)
{
if(book[i] != book[i-1])
{
printf("%d ", book[i]);
}
}
system("pause");
return 0;
}