合并排序算法的部分是这样,当它合并两个数组时:
while (fromValue <= mid && middleValue <= to) {
if (comp.compare(a[fromValue], a[middleValue]) < 0) {
values[index] = a[fromValue];
fromValue++;
} else {
values[index] = a[middleValue];
middleValue++;
}
index++;
}
while (fromValue <= mid) {
values[index] = a[fromValue];
fromValue++;
index++;
}
while (middleValue <= to) {
values[index] = a[middleValue];
middleValue++;
index++;
}
我了解语句的第一个。但是,第二个和第三个语句的意义是什么。因为第一次停止," fromvalue>中间"one_answers"中间值>"已经停止。那么,那两个声明将被跳过吗?
让我们以一个示例示例数组: {2, 4, 7, 9, 1, 3, 5, 6}
第一个while循环复制序列 1, 2, 3, 4, 5, 6
在此点middlevalue
到达to
。因此,循环结束。
然后,该程序将移至剩余的第一个循环,该循环在值7, 9
中复制。
案例示例2,以数组:{4, 7, 8, 10, 5, 6, 12, 14}
在此, 4, 5, 6, 7, 8, 10
中的主循环副本副本fromValue
已达到mid
。因此,循环结束了。
然后,程序将移至剩余的第二个,而循环则在值12, 14
中复制。
因此,在跳过循环时只有一个(一个依赖于两个较小的初始数组)。