java - 将两个数组合并为一个

标签 java algorithm merge

    int [] queue1 = {4,7,2,9,12,35,8,49};
    int [] queue2 = {24,53,6,19,41,71,1,68,11,32,99}        
    int[]mergeQ = new int[queue1.length + queue2.length];

    for(int i=0; i < queue1.length; i++ )
    {

      mergeQ[i*2] = queue1[i];       
      mergeQ[i*2+1] = queue2[i];  
    }
    for(int i=0; i < mergeQ.length; i++) {            
        System.out.print(mergeQ[i]+",");
    }

输出:4,24,7,53,2,6,9,19,12,41,35,71,8,1,49,68,0,0,0

如何打印出 queue2 的其余元素?

最佳答案

您的合并算法假设 queue1.length < queue2.length .虽然这对您的程序来说是正确的,但做出这样的假设通常不是一件好事。

更改合并算法以遍历两个数组,直到达到较短数组的长度,然后将较长数组的剩余元素转储到合并数组的尾部。您可以在一个循环中完成所有操作,如下所示:

int p = 0;
for (int i = 0 ; i < queue1.length || i < queue2.length ; i++) {
    if (i < queue1.length) {
        mergeQ[p++] = queue1[i];
    }
    if (i < queue2.length) {
        mergeQ[p++] = queue2[i];
    }
}

关于java - 将两个数组合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13660051/

相关文章:

java - 更新对话框内的编辑文本,值会更新,但文本不会更新

xml - 如何从 GPX 文件计算距离?

c++ - std::transform 的泛化

java - 在 SD 卡上组织数据以便快速搜索的最佳方式

svn - Tortoisesvn 跳过记录合并信息

java - 通过复杂比较合并多个排序的 csv 文件

原始数组类型上的 Java Arrays.asList 产生意外的列表类型

java - 存储经常使用的(不可更改的)List、Map 的最佳方式是什么?

java - 创建不带构造函数的 NumberFormat

git - 在 git 中中止 merge - 最佳实践