插入排序(Insertion Sort)
Contents
插入排序(Insertion Sort)
执行流程
- 从第一位开始, 依次与之前元素比较
- 当比之前元素小时, 交换
- 挨个交换直到 末尾元素
- 最差时间复杂度 : O(N ^ 2)
- 平均时间复杂度 : O(N * log N)
- 最优时间复杂度 : O(N)
- 空间复杂度 : O(1)
实现:
代码如下:
|
|
优化一:
- 把交换改为插入 (从swap (三次操作), 变为 挪动(一次操作))
- 先把当前元素,挪动到它前一个元素的位置
- 交换完毕后, 当前元素的位置赋值为交换的末尾元素
|
|
优化二:
- 在插入排序时,我们发现当前元素前边的元素已经有序
- 所以在找插入位置时,我们使用二分搜索寻找插入顺序
- 用 logN 的时间复杂度, 就能找到插入位置
|
|
Author 飞熊
LastMod Apr 26