求助学霸!以下程序中merge函数将两个已按升序存放在数组A、B中的数列合并为一个升序数列存放到C数组中。

算法提示:先将数组A中的各个元素依次拷贝到数组C中。然后,依次从数组B中取一个元素,按其值的大小插入到数组C中(保持C中的数据按升序排序)。编程要求如下:(1)编写函数v... 算法提示:先将数组A中的各个元素依次拷贝到数组C中。然后,依次从数组B中取一个元素,按其值的大小插入到数组C中(保持C中的数据按升序排序)。编程要求如下:
(1)编写函数void merge(int *a,int ma,int *b,int mb,int *c),将a数组中,长度为ma个元素,与b数组中,长度为mb个元素,按题意合并到数组c中。
(2)在主函数中调用merge()函数并输出合并后的数组元素。
展开
 我来答
guochandafeiji
2014-12-21 · TA获得超过584个赞
知道小有建树答主
回答量:227
采纳率:50%
帮助的人:64万
展开全部
void merge(int A[], int B[], int C[], int len1, int len2){
//A,B表示两个数组。C是新数组,且长度足够
//len1:A的长度 len2同理
int i=0,j=0,pos=0;
for(;i<=len1-1 && j<=len2-1;++pos){
if(A[i]<B[j])
C[pos]=A[i++];
else
C[pos]=B[j++];
}
}
for(;i<=len1-1;++i)
C[++pos]=A[i];
for(;j<=len2-1;++j)
C[++pos]=B[j];
}
望采纳
追问
真是太感谢了,不过老师要求编写函数void merge(int *a,int ma,int *b,int mb,int *c)并在主函数中调用,不可以用别的表示,我对C语言一窍不通,自己不会照着例题改写,还麻烦你帮帮忙^_^
追答
void merge(int *a,int ma,int *b,int mb,int *c){
//a,b表示两个数组。c是新数组,且长度足够
//ma:a的长度 mb同理
int i=0,j=0,pos=0;
for(;i<=ma-1 && j<=mb-1;++pos){
if(a[i]<b[j])
c[pos]=a[i++];
else
c[pos]=b[j++];
}
}
for(;i<=ma-1;++i)
c[++pos]=a[i];
for(;j<=mb-1;++j)
c[++pos]=b[j];
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式