繁体   English   中英

合并两个数组时出错

Error while merging two arrays

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有两个排序的数组arr1和arr2,并且我试图将这两个数组合并到另一个数组“输出”中。 但是问题是,如果第一个数组用尽,即数组arr1被完全使用,那么'i'的值将大于数组的长度,因此在下一次迭代中arr [i]会给出错误。 如何避免这种情况?

    int i=0;
    int j=0;

    for(int k=0;k<output.length;k++) {      

            if(arr1[i]<arr2[j]) {
                output[k]=arr1[i];
                i++;
            }


            else{           
                   output[k]=arr2[j];
                   j++;         
            }       

    }
2 个回复

您需要检查数组是否用尽:

int i=0;
int j=0;

for(int k=0;k<output.length;k++) {      
    if(i < arr1.length && j < arr2.length) { 
        // both arrays still have unused elements
        if (arr1[i]<arr2[j]) {
            output[k]=arr1[i];
            i++;
        } else {           
           output[k]=arr2[j];
           j++;         
        } 
    } else if (i < arr1.length) {
        // only the first array has unused elements
        output[k]=arr1[i];
        i++;   
    } else if (j < arr2.length) {
        // only the second array has unused elements
        output[k]=arr2[j];
        j++; 
    } 
}

我们可以利用以下事实:不必检查k的值,因为输出数组的长度等于arr1和arr2的长度之和。 一旦两个数组中的任何一个元素用尽,我们就从main for循环退出(因此条件i <arr1.length && j <arr2.length)。 现在,由于其中一个数组已用尽,我们只需要将另一个数组的所有剩余元素转储到输出数组中。 因此,我们检查条件i = arr1.length,如果为true,则意味着j等于arr2.length,因此arr2已耗尽,并且arr1的元素必须转储到输出数组中。 否则,我们将其余的arr2元素转储到输出数组中。

int i=0;
int j=0;

for(int k=0;i<arr1.length && j < arr2.length ;k++) {      

        if(arr1[i]<arr2[j]) {
            output[k]=arr1[i];
            i++;
        }


        else{           
               output[k]=arr2[j];
               j++;         
        }       

}
if(i != arr1.length){
    for(; i < arr1.length; i++,k++)
    output[k]=arr1[i];
}
else{
    for(; j < arr2.length; j++,k++)
    output[k]=arr2[j];
}
1 合并数组时出现运行时错误

我目前正在尝试合并数组,并且已经完成了大部分程序,但是仍然出现错误。 我尝试对其进行修改,然后不断钻研自己,直到做对为止,因此我回到了原来的代码。 我的代码: 现在这是错误消息。 我该如何解决? ...

2 连接数组时合并两个 yaml 文档

我想合并两个 yaml 文档,结果包含 所有映射值(最后一个优先) 串联数组 例如给定这个文件 和这个文件 结果应该包含所有节点,合并的数组和值不是来自最后一个文件的数组 yq 可以这样做吗? ...

2021-03-18 15:35:23 1 356   yaml/ yq
3 合并算法在合并时对两个字符串数组进行排序

我用两个字符串数组创建了一个程序。 清单1和清单2.它们未分类。 该程序运行,并使用冒泡排序算法单独对两个列表进行排序。 然后将它们合并为第三个数组并打印到屏幕上。 在这个阶段,我试图合并将数组排序在一起,同时合并它们却收效甚微。 将前半部分和后半部分合并在一起,使其两个列表按 ...

4 在PHP中的while()中合并数组

我发现需要使用元素键作为标识符,因此偶然发现了以下困境。 我正在读取文件并对其进行解析,以提取文件名,然后使用它们。 当我遍历文件中的所有行时,我正在为与正则表达式的每次匹配创建一个新数组: 因此,我得到: 我想将它们全部合并为一个数组,以便它们可能具有不同的键。 在这 ...

5 使用array_merge函数合并两个数组时出现问题

我有两个关联数组。 我正在使用array_merge合并它们。 现在$ Array3的值是这样的。 直到我阅读php手册为止,这看起来确实很奇怪,手册上说输入数组中带有数字键的值将用结果数组中从零开始的递增键重新编号 。 array_merge手册 我的问题是如何 ...

9 合并一个类的两个数组

我有两个数组Record类。 类Record的定义如下 这是定义的两个数组(已经初始化) 目的是找到在两个数组之间匹配的字符串,并将它们添加到一个新数组中,并将其计数加在一起,如果另一个数组中没有一个字符串,则只需将其添加到新数组中即可。 为此,我首先尝试对两个数组进行排序( ...

10 在 .NET 中合并两个数组

.NET 2.0 中是否有一个内置函数可以将两个数组合并为一个数组? 数组都是相同的类型。 我从代码库中广泛使用的函数中获取这些数组,但无法修改该函数以返回不同格式的数据。 如果可能,我希望避免编写自己的函数来完成此操作。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM