我的合并排序程序在理论上看起来对于两个数值等效的数组是正确的,但是返回的值不是有序的而且根本不合适。我在合并列表的末尾收到三个零,甚至没有包含在任何数组中。
public class Merge_Sort
{
public static void main(String [] args)
{
int [] a1 = new int[10];
int [] b1 = {32, 26, 44, 87, 48, 51, 53, 89, 92, 1};
a1[0] = 12;
a1[1] = 36;
a1[2] = 45;
a1[3] = 52;
a1[4] = 48;
a1[5] = 24;
a1[6] = 29;
a1[7] = 98;
a1[8] = 23;
a1[9] = 32;
int i = 0, j = 0, k = 0;
int[] merge = new int[a1.length + b1.length];
while (i < a1.length && j < b1.length) {
if (a1[i] < b1[j]) {
merge[k] = a1[i];
i++;
} else {
merge[k] = b1[j];
j++;
}
k++;
}
for (int x : merge) {
System.out.println(x);
}
}
}
答案 0 :(得分:1)
这不是合并排序,而只是合并步骤。 它假定输入数组已经排序,在您的示例中不是这种情况。
此外,它还没有完成:如果你到达数组的末尾怎么办?剩下的元素会发生什么?