递归到底条件
来源:3-2 归并排序法的实现
BSJ_dong2020
2021-04-03
void __mergeSort(T arr[], int l, int r) {
if (l >= r)
return;
}
这里面if的条件我没理解;
l<=r时还有两个元素要排序也没懂;
写回答
1回答
-
__mergeSort 处理的数组区间是 arr[l, r],这个区间是前闭后比的。
l >= r,说明这个区间里最多只有一个元素。
如果 l == r,比如 arr[3, 3],这个区间里只有 arr[3] 这一个元素,一个元素的数组肯定自己就是有序的,不需要排序,直接返回;
如果 l > r,比如 arr[4, 3],这个区间左边界比右边界还大,所以里面不包含任何元素(没有一个 i 满足 i >= 4 并且 i <= 3),一个空区间也不需要排序,直接返回。
继续加油!:)
062021-06-15
相似问题