GESP 五级 · GESP202609 C++ 五级 第 23 题

判断题 · 答案 A · 考点:递推、分治算法、时间复杂度分析

← 整套速查表 GESP 五级 全部真题

题目

归并排序的递推式为 $T(n) = 2T(n/2) + O(n)$,对应的时间复杂度为 $O(n \log n)$。

答案:A

考点

递推分治算法时间复杂度分析

解题思维

看到递推式先想分治法的递归结构:T(n)=2T(n/2)+O(n) 是归并排序的标准递推,合并两个有序子数组需要线性时间。展开递推:T(n)=2[2T(n/4)+n/2]+n=4T(n/4)+2n,继续展开到 T(n)=nT(1)+n log₂n,故时间复杂度为 O(n log n)。

常见错误

易把归并排序与快速排序混淆,误写 T(n)=T(n-1)+O(n) 或 T(n)=2T(n/2)+O(n²);也有考生忘记合并步骤的线性代价,只看到递归分支数就断言 O(n log n) 是巧合而非推导结果。

详细解析(节选)

1. 考纲定位

本题考查 GESP 五级「算法」模块中的递推关系与分治算法,卡住的是多数考生对递归展开的机械记忆——他们背下"归并排序是 O(n log n)",却说不清递推式为何如此、合并步骤为何是线性代价。命题人用一道判断题,把"会背"和"会推"的考生彻底分开。

2. 解题思维

归并排序是典型分治:将 n 个元素对半分成两个子问题,递归排序后合并。合并两个已排序数组需要逐个比较移动,复杂度 O(n)。因此递推式为 T(n)=2T(n/2)+O(n)。展开:

底数 n 时 T(1)=O(1),故 T(n)=O(n log n)。结论:递推式正确,时间复杂度正确,选 A。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断