在上题的归并排序算法中,mergeSort(listData, start, middle); 和 mergeSort(listData, middle + 1, end); 涉及到的算法为( )。
看到 mergeSort 里那一串 mergeSort 的调用,别慌,直接想:把大问题拆成两个小问题,分别搞定再合并,这就是分治的骨架,选 B 就对了。
最容易栽跟头的就是把递归和递推搞混,或者只盯着‘函数调用’四个字就选了递推。其实递推是‘由前推后’的线性过程,而这里是在分治框架下递归调用,性质完全不同。
【考点】递归|分治算法|归并排序
GESP 五级《递归算法》模块的核心考点。命题人把这道题放在这里,就是卡住那些‘看到递归就以为在考递推’的考生——五级要求考生能识别递归背后的算法思想,而不仅是会写递归代码。