我有这两个数组:
数组A [-5, -4, -3, -2, -1, 6, 7, 8, 9, 10, 11] 数组B [-33, -22, -11, 44, 55, 66, 77, 88]
如您所见,数组 A 和数组 B 均已排序。我必须将它们合并到应该排序的第三个数组(数组C)中。 (虽然我不能使用任何数组排序函数)
这是我的 while 循环:
int[] c = new int[a.length + b.length];
int aCount = 0;
int bCount = 0;
int cIndex = 0;
while (aCount < a.length && bCount < b.length) {
if (a[aCount] < b[bCount]) {
c[cIndex] = a[aCount];
cIndex++;
aCount++;
}
else {
c[cIndex] = b[bCount];
cIndex++;
bCount++;
}
}
这是我的输出:
[-33, -22, -11, -5, -4, -3, -2, -1, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0]
在达到 11 之前它都可以正常工作,但之后它只显示 0,而它应该是 44,55,66,77,88。
我错过了什么?
最佳答案
您只需将两个数组合并到到达数组 a 末尾的点。之后 while 循环中断。您必须插入另一个数组的剩余值。
int[] tmp = (aCount == a.length ? b : a);
int ct = (aCount == a.length ? bCount : aCount);
for(; ct < tmp.length ; ct++)
c[cIndex++] = temp[ct];
关于java - 为什么我的合并 2 个整数数组的 Java 程序只在某个点给出正确的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541807/