插入排序算法
一 算法原理
插入排序是稳定的原地排序算法,核心思想是逐步构建有序序列。对于未排序部分的每个元素,在已排序序列中从后向前扫描,找到合适位置插入。时间复杂度为:
1)最优:O(n)(已有序)
2)最差:O(n^2)(完全逆序)
3)平均:O(n^2)
二 排序过程
以数组 [6 5 7 8 2] 为例的逐步过程。
1. 初始状态
[6 | 5 7 8 2] // 已排序区:6,未排序区:5 7 8 2
2. 插入5
5 < 6 → 交换
[5 6 | 7 8 2] // 已排序区:5 6
3. 插入7
7 > 6 → 不移动
[5 6 7 | 8 2] // 已排序区:5 6 7
4. 插入8
8 > 7 → 不移动
[5 6 7 8 | 2] // 已排序区:5 6 7 8
5. 插入2
2 < 8 → 后移8
2 < 7 → 后移7
2 < 6 → 后