求助学霸!以下程序中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()函数并输出合并后的数组元素。 展开
(1)编写函数void merge(int *a,int ma,int *b,int mb,int *c),将a数组中,长度为ma个元素,与b数组中,长度为mb个元素,按题意合并到数组c中。
(2)在主函数中调用merge()函数并输出合并后的数组元素。 展开
1个回答
展开全部
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];
}
望采纳
//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];
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询