1 10 20 40 32 67 40 20 89 300 400 15
8 15 20 32 40 67 89 300 400
解题思路:
本题分为两个部分:排序和去重。
排序,数据多的情况使用快排,是最好的选择,快排的程序代码如下:
int cmp(const void *a,const void *b)
{
return(*(int *)a-*(int *)b);
}
qsort(a,m,sizeof(a[0]),cmp);
去重的方法有多重,我选择的方法是覆盖相同数据以达到去重的目的。
程序代码:
#include<stdio.h>
#include<stdlib.h>
//void fun(int a[],int n);
int cmp(const void *a,const void *b)
{
return(*(int *)a-*(int *)b);
}
int main()
{
int n,m,a[105],i,j,count=0;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
//getchar();
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
//fun(a,m);
qsort(a,m,sizeof(a[0]),cmp);
for(i=0;i<m;i++)
{
if(a[i]==a[i-1])
{
for(j=i;j<m-1;j++)
a[j]=a[j+1];
m--;
i--;
}
}
printf("%d\n",m);
for(i=0;i<m;i++)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}原文:http://blog.csdn.net/yzi_angel/article/details/40919411