a651291702 2014-08-01 04:59:34
点我顶贴
收藏
删除
#include <stdio.h>
int a[5000]; //定义数组
int qs(int left,int right) //快排,要掌握
{
int i,j,x;
if(left<right)
{
i=left;
j=right;
x=a[i];
while (i<j)
{
while(i<j&&a[j]>x) j--; //找到小于x的值的数y 赋值给x
if(i<j) a[i++]=a[j];
while(i<j&&a[i]<x) i++; //找到小于x的值的数i 赋值给y
if(i<j) a[j--]=a[i];
}
a[i]=x;
qs(left,i-1);
qs(i+1,right);
}
}
int main()
{ int i,j,ans=0;
int n;
scanf("%d",&n); //输入条件
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
a[0]=0;
qs(1,n); //将数组排列
for(i=1;i<=n;i++)
if(a[i]!=a[i-1]) ans++; //统计共有多少个不重复的
printf("%d\n",ans);
for(i=1;i<=n;i++) //输出
if(a[i]!=a[i-1]) printf("%d ",a[i]);
return 0;
}