请问老师关于归并排序的问题

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

精慕门6573819

2019-09-04

在给新开辟的aux空间赋值的时候,课程中提到这句话,aux空间是从0开始的,但是我们要处理的arr这个空间是从L开始的,为此它们之间有一个L位置的偏移量。我不大理解这句话的意思。这里的L不也是0吗?

写回答

1回答

liuyubobobo

2019-09-04

在递归调用的过程中,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);    
}


继续加油!:)

0
1
精慕门6573819
非常感谢!
2019-09-04
共1条回复

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

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

11190 学习 · 1614 问题

查看课程