← 返回课程列表
算法通关训练营 · 归并排序篇(已并入旗舰课 469)

算法通关训练营 · 归并排序篇(已并入旗舰课 469)

本课已并入《算法通关旗舰课:从链表到排序的 30 讲完整路径》(30 讲完整路径一条走完)。原付费学员仍可继续访问,建议前往 算法通关旗舰课 体验完整体系。
归并排序 vs 主定理:恰好落在情况 2T(n) = 2T(n/2) + Θ(n)a=2, b=2 → n^{log_b a} = n^{log₂2} = n临界值 n^{log₂2} = nf(n) = Θ(n) = Θ(n log⁰n)⇒ f(n) 与临界值同阶(k=0)T(n) = Θ(n^{log₂2} log^{0+1}n)= Θ(n log n)(最好/平均/最坏一致)

图:归并排序的递推式恰好落在主定理情况 2

归并排序是分治算法的“标准模板”。掌握它之后,快排、最近点对、计数逆序对都能复用同一套“分—合”骨架。下面给出通用分治模板,归并排序只是其中一种具体实例化。

def divide_and_conquer(problem):
    if len(problem) <= 1:          # 基线:子问题足够小
        return solve_base(problem)
    sub = split(problem)            # 分:拆成独立子问题
    results = [divide_and_conquer(s) for s in sub]
    return combine(results)         # 合:合并子结果

# 归并排序就是:split=对半切,combine=merge
排序模块学习路线:从 O(n²) 地基到工程混合B1插入/选择/冒泡O(n²) 地基B2归并排序分治 O(n log n)B4堆排序原地 O(n log n)B3快速排序平均最快B5/B7计数/基数/桶线性时间B6选择/中位数工程综合先吃透三种 O(n²) 排序(今天)→ 再学 O(n log n) 经典 → 最后理解现代混合排序

图:算法通关训练营·排序篇的章节递进路线