请问老师关于归并排序的问题
来源:3-2 归并排序法的实现
精慕门6573819
2019-09-04
在给新开辟的aux空间赋值的时候,课程中提到这句话,aux空间是从0开始的,但是我们要处理的arr这个空间是从L开始的,为此它们之间有一个L位置的偏移量。我不大理解这句话的意思。这里的L不也是0吗?
写回答
1回答
-
在递归调用的过程中,l 可能不是零。
在归并的递归函数中,打印一下 l 和 r,看看 merge 函数处理的 l 和 r 都有可能是多少?
再单步跟踪一下,仔细理解一下,为什么有的时候,l 不是零了?
==========
template<typename T> void __mergeSort(T arr[], int l, int r){ if( l >= r ) return; int mid = (l+r)/2; __mergeSort(arr, l, mid); __mergeSort(arr, mid+1, r); // 这里,传入的参数 l 不是 0 __merge(arr, l, mid, r); }
继续加油!:)
012019-09-04
相似问题