讨论 / c语言的各位基友,支持下我们,我发题解了,看看吧
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;

}

#1 wrongnumber@2014-08-02 06:07:23
回复 删除
看这个范围开个1000的数组用桶排就行了........
#2 ezqrq@2015-09-25 01:17:45
回复 删除
尼玛,你们都不用链表的,开这么大一个数组,只有我一个人傻乎乎地。。
查看更多回复
提交回复