题解 | #KiKi去重整数并排序#
KiKi去重整数并排序
http://www.nowcoder.com/practice/f59b914172b94c69a2b29ad0a1d9b1a7
#include<stdio.h>
#include<stdlib.h>
int compare(const void* a, const void* b)
{
return (*(int*)a)-(*(int*)b);
}
int main()
{
int n = 0;
int arr[1000] = { 0 };
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
qsort(arr, n, 4, compare);//先升序排序,排序后有重复的数字
for (int i = 0; i < n; i++)//开始遍历数组
{
if (arr[i] == arr[i + 1])//如果前后两数相等
{
for (int j = i; j < n; j++)
{
arr[j] = arr[j + 1];//删掉第一个相同数,然后其余数向前补齐空缺
}
n--;//数组总元素减一
i--;//这时第i个数是原来第i+1的数,i--后重新检查新的第i个数
}
}
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
}