插入排序Insertion sort
将新元素插入前面已排序前缀的正确位置。
- 核心约束
- 每轮后有序前缀增长一个元素。
- 适用问题
- 小数组与混合排序中的短区间。
- 边界与取舍
- 大量逆序时元素移动成本高。
时间与空间#
n 为元素数,I 为逆序对数量;原地向前移动元素。
- 时间复杂度
- ;最好 ,平均 / 最坏
- 辅助空间
平均二次界以随机排列等常见输入模型为前提;只移动严格大于当前值的元素可保持稳定。二分定位插入位置可减少比较,不能消除数组移动。
工程中的应用#
1 个案例 · 附源码CPython 的列表排序识别已有序段,补齐短段,再按 Powersort 策略稳定归并,兼顾局部有序输入与通用排序。
附源码片段 · 检索与计算
基础原理参考资料
Princeton · Insertion交换次数与逆序对的关系及部分有序输入的表现。