我想把两个排序的数组按升序放到一个数组中,但我不知道我做错了什么。
它不会将它们按顺序排列,只是将两个阵列组合在一起。
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] + " ");
}
最后两个while循环的作用是什么?你可能不需要它们。似乎您对前两个数字进行排序,然后while循环复制第一个数组,然后复制第二个数组,而不进行排序。
你能分享一下下面的结果吗?
arry1 = [1,2,6,7]
arry2 = [2,3,4,8]
我同意悖论,没有两个额外的while循环,上面的逻辑就足够了。前任:
while (merg1 < count1 && merg2 < count2) {
if (ary1[merg1] <= ary2[merg2]) {
merged[index++] = ary1[merg1++];
}
else {
merged[index++] = ary2[merg2++];
}
}
错误不是来自于错误吗
while (merg1 < count1 && merg2 < count2) {
...
}
当其中一个数字超过其极限时,它终止。在while循环之后,我将添加另一个循环,将剩余数组的其余部分添加到合并数组中。