合并排序有什么区别?中 = 左 +(右 - 左)/ 2 和中 = (左 + 右)/ 2



我遇到了代码。

private static <T extends Comparable<T>> void doSort(T[] arr, int left, int right) {
if (left < right) {
int mid = left + (right - left) / 2;
doSort(arr, left, mid);
doSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}

我认为左+(右-左)/2中=(左+右)/2之间没有区别

有人能解释其中的区别吗?

谢谢!

如果数组足够大,则整数可能溢出。

CCD_ 1是有问题的,因为CCD_。left + (right - left) / 2阻止了这种情况。

最新更新