定义函数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);
}
上列代码只能排前面的,最后一个出错,求高手指导并改正哦,谢谢咯!!
不明白,求全代码
把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);
}