归并排序Merge sort

将有序子序列逐层归并,逐步形成整体有序序列。

核心约束
归并的输入子序列已有序,输出保持整体有序。
适用问题
稳定排序与外部排序。
边界与取舍
实际项目仅归并已有序输入时,应单独归类为有序归并。
2 · 5 · 91 · 4 · 81 · 2 · 4 · 5 · 8 · 9
有序归并示意:输入已排序;归并排序还需从原始输入建立有序段,可递归划分或自底向上合并。

时间与空间#

n 为元素数;比较和移动一个元素按 O(1)O(1) 计算。

时间复杂度
经典实现最好 / 平均 / 最坏 O(nlog⁡n)O(n \log n)
辅助空间
数组归并 O(n)O(n),另有 O(log⁡n)O(\log n) 递归栈

先分割再归并;相等元素优先取左侧可保持稳定。链表原地重连、自然归并及提前跳过有序段的实现有不同辅助空间或最好情况。

工程中的应用#

2 个案例 · 附源码
基础原理参考资料

Princeton · Merge标准稳定归并排序的时间和额外内存。

8 个概念