将两个一维数组排序,合并到一个一维数组中仍然保持有序,
供参考:
#include<stdio.h>
#define N 20
void sort_arry(int *a,int n)
{
int i,j,tmp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i] > a[j])
{
tmp = a[i];
a[i]= a[j];
a[j]= tmp;
}
}
}
}
int main()
{
int a[N],b[N],c[N+N],*p,*q,*r,anum,bnum;
scanf("%d",&anum); //数组a[]的元素数
for(p=a;p<a+anum;p++) //输入数组 a[]
scanf("%d",p);
sort_arry(a,anum); //排序 升序
scanf("%d",&bnum); //数组b[]的元素数
for(q=b;q<b+bnum;q++) //输入数组 b[]
scanf("%d",q);
sort_arry(b,bnum); //排序 升序
for(p=a,q=b,r=c;p<a+anum && q<b+bnum ;)//升序 合并两个数组到c[]
{
if(*p>*q)
{
*r++=*q++;
}
else
{
*r++=*p++;
}
}
if(p<a+anum)
{
for(;p<a+anum;)
{
*r++=*p++;
}
}
else if(q<b+bnum)
{
for(;q<b+bnum;)
{
*r++=*q++;
}
}
for(r=c;r<c+anum+bnum;r++)//输出合并后的数组 c[]
{
printf("%d ",*r);
}
return 0;
}