样例:
输入:
10
20 40 321 67 40 20 89 301 407 15
输出:
8
15 20 40 67 89 301 321 407
输入:
20
20 40 321 677 40 20 89 301 407 515 40 321 67 40 20 89 301 407 15 499
输出:
11
15 20 40 67 89 301 321 407 499 515 677
#include <stdio.h>
#include <stdlib.h>
int b[101];
int n;
void quicksort(int left,int right)
{
if(left>right)
{
return;
}
int i,j,t;
int temp;
i=left;
j=right;
temp=b[left];
while(i!=j)
{
while(b[j]>=temp&&i<j)
{
j--;
}
while(b[i]<=temp&&i<j)
{
i++;
}
if(i<j)
{
//break;
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
b[left]=b[i];
b[i]=temp;
quicksort(left,i-1);
quicksort(i+1,right);
}
int main()
{
int sum=0,a[101];
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&b[i]);
}
quicksort(1,n);
/* for(i=1;i<=n;i++)
{
printf("%d ",b[i]);
}
*/ a[1]=b[1];
j=2;
int z=n;
for(i=2;i<=n;i++)
{
if(b[i]==b[i-1])
{
z--;
}
else
{
a[j]=b[i];
j++;
}
}
printf("%d\n",z);
for(i=1;i<=z;i++)
{
printf("%d ",a[i]);
}
getchar();getchar();
//system("pause");
return 0;
}
其中使用了快速排序方法,并在输出时去重处理。