A-A+

给定有m个整数的递增有序数组A[1..m]和有n个整数的递减有序数组B[1..n] 试写出算

2022-08-12 15:46:35 问答库 阅读 196 次

问题详情

给定有m个整数的递增有序数组A[1..m]和有n个整数的递减有序数组B[1..n],试写出算法:将数组A和B归并为递增有序数组C[1..m+n]。(要求:算法的时间复杂度为D(m+n))


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:void union(int A[]B[]C[]mn)//整型数组A和B各有m和n个元素前者递增有序后者递减有序本算法将A和B归并为递增有序的数组C{i=0;j=n一1;k=0;//ijk分别是数组A、B和C的下标因用C描述下标从0开始while(i<m&&j>=0)if(a[i]<b[j])c[k++]=a[i++]else c[k++]=b[j一一];while(i<m)c[k++]=a[i++];while(j>=0)c[k++]=b[j一一];}//算法结束
此问题考查的知识点是线性结构的查找。数组A和数组B的元素分别有序,欲将两数组合并到数组C,使数组C仍有序,应将数组A和数组B复制到数组C,只要注意数组A和数组B数组指针的使用,以及正确处理一个数组读完数据后将另一个数组余下的元素复制到数组C中即可。因为不允许另辟空间,而是利用数组A(空间足够大),则初始k=m+n一1。

考点:整数,数组