递归到底条件

来源:3-2 归并排序法的实现

BSJ_dong2020

2021-04-03

void __mergeSort(T arr[], int l, int r) {
if (l >= r)
return;
}
这里面if的条件我没理解;
l<=r时还有两个元素要排序也没懂;

写回答

1回答

liuyubobobo

2021-04-04

__mergeSort 处理的数组区间是 arr[l, r],这个区间是前闭后比的。


l >= r,说明这个区间里最多只有一个元素。


如果 l == r,比如 arr[3, 3],这个区间里只有 arr[3] 这一个元素,一个元素的数组肯定自己就是有序的,不需要排序,直接返回;


如果 l > r,比如 arr[4, 3],这个区间左边界比右边界还大,所以里面不包含任何元素(没有一个 i 满足 i >= 4 并且 i <= 3),一个空区间也不需要排序,直接返回。


继续加油!:)

0
6
ych_1997
回复
liuyubobobo
谢谢老师!
2021-06-15
共6条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程