插入排序Insertion sort

将新元素插入前面已排序前缀的正确位置。

核心约束
每轮后有序前缀增长一个元素。
适用问题
小数组与混合排序中的短区间。
边界与取舍
大量逆序时元素移动成本高。

时间与空间#

n 为元素数,I 为逆序对数量;原地向前移动元素。

时间复杂度
O(n+I)O(n+I);最好 O(n)O(n),平均 / 最坏 O(n2)O(n^{2})
辅助空间
O(1)O(1)

平均二次界以随机排列等常见输入模型为前提;只移动严格大于当前值的元素可保持稳定。二分定位插入位置可减少比较,不能消除数组移动。

工程中的应用#

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

Princeton · Insertion交换次数与逆序对的关系及部分有序输入的表现。

8 个概念