我想按升序将两个排序的数组放入一个数组中,但我不是我做错了。
它不会将它们按顺序排列,只需将两个数组组合在一起。
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] + " ");
}
答案 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);
这应该可以为您提供所需的结果。