按升序合并两个数组

时间:2014-01-23 00:07:35

标签: arrays sorting merge

我想按升序将两个排序的数组放入一个数组中,但我不是我做错了。

它不会将它们按顺序排列,只需将两个数组组合在一起。

int [] merged = new int[count1 + count2];
int merg1 = 0, merg2 = 0, index = 0;

while (merg1 < count1 && merg2 < count2) {
    if (ary1[merg1] <= ary2[merg2]) {
        merged[index++] = ary1[merg1++];
    }
    else {           
        merged[index++] = ary2[merg2++];
    }

    while (merg1 < count1) {
        merged[index++] = ary1[merg1++];
    }

    while (merg2 < count2) {
        merged[index++] = ary2[merg2++];
    }

    for (int i = 0; i < index; i++) {
        System.out.print(merged[i] + " ");
    }

4 个答案:

答案 0 :(得分:0)

最后两个while循环是什么?你可能不需要它们。看来你排序前两个数字然后while循环复制第一个数组然后第二个数字没有排序它们。

答案 1 :(得分:0)

你能分享一下结果如何看待以下内容吗?

arry1 = [1,2,6,7]
arry2 = [2,3,4,8]

我同意Paradox,没有两个额外的while循环,你上面的逻辑就足够了。例如:

while (merg1 < count1 && merg2 < count2) {
    if (ary1[merg1] <= ary2[merg2]) {
        merged[index++] = ary1[merg1++];
    }
    else {           
        merged[index++] = ary2[merg2++];
    }
}

答案 2 :(得分:0)

错误不会来自

while (merg1 < count1 && merg2 < count2) {
...
}

当其中一个数字超过其限制时终止。在while循环之后,我将添加另一个循环,将剩余的剩余数组添加到合并数组中。

答案 3 :(得分:0)

你能使用Array实用程序吗?例如:

    int[] array1 = {1,2,6,7};
    int[] array2 = {2,3,4,8};
    int[] mergedarray = new int[array1.length + array2.length];
    System.arraycopy(array1, 0, mergedarray, 0, array1.length);
    System.arraycopy(array2, 0, mergedarray, array1.length, array2.length);
    Arrays.sort(mergedarray);

这应该可以为您提供所需的结果。