有两个有序的集合,请通过合并得到一个新的集合(注意 集合不允许有重复数)
#include<stdio.h>
#define N 100000
int main()
{
int a[N],b[N],c[N],m,n,i,j;
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
int w=0;
for(i=0,j=0;i<m&&j<n;)//此处条件一定是&& !!!
{
if(a[i]<b[j])
{
c[w]=a[i];
i++;
w++;
}
else if(a[i]==b[j])
{
c[w]=a[i];
i++;
j++;
w++;
}
else//b[j]<a[i]
{
c[w]=b[j];
j++;
w++;
}
}
//printf("%d %d\n",i,j);
int l;
if(i==m)//a[i]已经复制完,此时把剩余的b中的数复制到c中
{
for(l=j;l<n;l++)
{
c[w]=b[l];
w++;
}
}
if(j==n)
{
for(l=i;l<m;l++)
{
c[w]=a[l];
w++;
}
}
for(i=0;i<w;i++)
printf("%d ",c[i]);
return 0;
}