一组数据的“去重“和”排序“问题,我的程序错误很多,请各位高手改正一下!
题目:样例输入
10
20 40 32 67 40 20 89 300 400 15
样例输出
8
15 20 32 40 67 89 300 400
#include<stdio.h>
int main()
{
void delete(int a[],int k,int b);
void bub(int a[],int n,int l);
int n,i,j,l=0;
int a[1000];
scanf("%d",&n);
for(i=0;i<n;++i)
scanf("%d",&a[i]);
for(i=0;i<n;++i)
{
for(j=i+1;j<n;++j)
if(a[i]==a[j])
delete(a,a[i+1],n);
l++;
}
printf("%d\n",n-l);
bub(a,n,l);
for(i=0;i<(n-l);++i)
{
printf("%d",a[i]);
}
printf("\n");
return 0;
}
void delete(int a[],int k,int b)
{
int i,j;
for(i=0;i<b;++i)
{
if(k==a[i])
for(j=i;j<b-1;++j)
a[j]=a[j+1];
break;
}
}
void bub(int a[],int n,int l)
{
int i,j,t;
for(i=0;i<n-l;++i)
{
for(j=0;j<n-l-1;++j)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}