首页 > 代码库 > 两个有序数列的合并
两个有序数列的合并
问题:a[]、b[]分别为有序排列的一个数组。现在要将a[]、b[]合并为c[]。例如:a[] = {1,3,4,7,10,15}; b[] = {2,5,8,20},我们需要得到的c[] = {1,2,3,4,5,7,8,10,15,20}.
解决思路:1)先比较a[0]和b[0],如果a[0]相对较小,将a[0]的值赋值给c[0],然后比较a[1]和b[0]。2)当其中一个数组里的值已经全部赋值给了c[],那么直接将另外一个数组剩下的元素一次性赋予给c[]。
下面用java实现。
public class Test { public static void main(String[] args) { int[] a = {10,20,50,70,80,500,1001}; int[] b = {10,40,60,90,100,120,200}; int aLength = a.length; int bLength = b.length; int[] c = new int[aLength + bLength]; int aIndex = 0; int bIndex = 0; for(int i = 0; i < aLength + bLength; i++) { if(a[aIndex] <= b[bIndex]) { c[i] = a[aIndex]; if(aIndex < aLength - 1 ) { aIndex++; } //当数组a的数据已经全部读取完毕时 else { for(int t = i + 1; t < aLength + bLength; t++) { c[t] = b[bIndex]; bIndex++; } break; } } else { c[i] = b[bIndex]; if(bIndex < bLength - 1 ) { bIndex++; } //当数组b的数据已经全部读取完毕时 else { for(int t = i + 1; t < aLength + bLength; t++) { c[t] = a[aIndex]; aIndex++; } break; } } } for(int i = 0;i < aLength + bLength; i++) { System.out.println(c[i]); } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。