插入排序
插入排序
基本概念
插入排序(Insertion Sort)基本思想:
将数组分为有序区间和无序区间,每次从无序区间取出一个元素插入到有序区间的正确位置。
算法步骤
假设数组长度为 n,算法步骤如下:
- 初始化:有序区间为 ,无序区间为
- 第i趟插入(i 从 11 到 n−1):
- 取出无序区间第一个元素
- 从右到左遍历有序区间,将大于 的元素右移一位
- 找到合适位置后插入
- 有序区间扩展为 ,无序区间变为
内部实现:
1 | class Solution: |
复杂度分析:
| 指标 | 复杂度 | 说明 |
|---|---|---|
| 最佳时间复杂度 | 数组已有序,每个元素只需比较一次 | |
| 最坏时间复杂度 | 数组逆序,每个元素需要比较 i−1i−1 次 | |
| 平均时间复杂度 | 一般情况下的复杂度 | |
| 空间复杂度 | 原地排序,只使用常数空间 | |
| 稳定性 | 稳定 | 相等元素相对位置不变 |
| 适用场景: |
- 数据量较小(n<50)
- 数据基本有序
- 在线排序(数据逐个到达)
插入排序是一种简单直观的排序算法,通过逐步构建有序序列实现排序。 - 优点:实现简单,稳定排序,空间复杂度低,对基本有序数据效率高
- 缺点:时间复杂度高,不适合大规模数据
应用场景:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 笺札!





