拿下技术面上传简历

下面是一段用切片实现的归并排序: ```python def msort(a): if len(a) <= 1: return a mid = len(a) // 2 left = msort(a[:mid]) right = msort(a[mid:]) return merge(left, right) ``` (1) 写出它的递归式并求时间复杂度。 (2) 这段代码的空间复杂度是多少?注意 `a[:mid]` 在 Python 中是复制而不是视图,请把每一项的来源说清楚。 (3) 如果改成传下标区间、不产生新列表的写法,时间和空间会发生什么变化?

数据结构与算法复杂度分析1-3 年知识点 1 个

面试官在考什么

判断候选人能否把「递归深度 × 每层空间」这种想当然的乘法拆开,正确判断切片在任意时刻的存活量,并能否用主定理而不是靠记忆回答递归式。

递归复杂度

回答框架 · 前两步

  1. 递归式 T(n) = 2T(n/2) + Θ(n):划分与合并各是线性。主定理中 log_b a = 1 与 f(n)=Θ(n) 同阶,属 case 2,得 Θ(n log n)。
  2. 递归调用栈深度 O(log n),栈本身占 O(log n) 空间。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题