C语言:两数组合并,并升序排列。

定义函数void Merge(int a[], int n, int b[], int m),参数a、b为一维数组,数组中的数据为升序排列,n和m分别为它们的元素个数。函数的功能为:将数组a和b合并为一个数组,合并后的结果存放于数组a中,要求合并后的数组a仍旧为升序排列。请编程实现,并编写main函数对其测试。
#include<stdio.h>
void Merge(int a[],int n,int b[],int m)
{ int i,j,k;
for(i=0,j=0;i<m+n&&j<m;i++)
if(a[i]>b[j])
{ for(k=m+n;k>=i;k--)
a[k]=a[k-1];
a[i]=b[j];
j++;
}
for(i=0;i<m+n;i++)
printf("%d ",a[i]);
}
int main()
{ int a[100]={1,3,5,7};
int b[4]={2,4,6,8};
Merge(a,4,b,4);
}
上列代码只能排前面的,最后一个出错,求高手指导并改正哦,谢谢咯!!

第1个回答  2012-05-13
nt i,j,k;
for(i=0,j=0;j<m;i++)
if(a[i]>b[j])
{for(k=i+m;k>=i;k--)
a[k]=a[k-1];
a[i]=b[j];
j++;
}else if(i>n){a[i]=b[j];}
}追问

不明白,求全代码

第2个回答  2012-05-13
噢 这个。这个最好是在用一个数组,否则要在a数组中将元素向后移动,有点麻烦。楼主想怎么做?追问

把b数组一到a中,然后再升序。

追答

已知a,b数组元素个数吗?

追问

输入的时候要求要写个数的

追答

#include
void Merge(int a[],int n,int b[],int m)
{ int i=0,j=0,k=0;
for(i=m,j=0;j<m;i++,j++)//插入b数组元素至a
a[i]=b[j];
for(i=0;i<m+n;i++)
for(j=i+1;j<m+n-1;j++)//进行排序
if(a[j]<=a[i]){
k=a[j];
a[j]=a[i];
a[i]=k;
}
for(i=0;i<m+n;i++)
printf("%d\t",a[i]);
system("pause");
}
int main()
{ int a[100]={1,3,5,7};
int b[4]={2,4,6,8};
Merge(a,4,b,4);
}

本回答被提问者采纳