- 原理
- 插入排序将数组分成两个部分
- 一部分为已排序数组,另一部分为未排序数组
- 在每次循环中将未排序数组中的元素插入到已排序的数组中
- 直到数组有序结束循环
- 流程
- 红色表示已排序数组
- 蓝色表示待插入元素
- 绿色表示当前与待插入元素进行比较的元素
- 代码
- 优化方式
- 待插入元素在于有序数组部分进行比较时,遇到比自己小的元素就表示找到了待插入的位置,不需要再进行比较
- 插入时可以直接移动元素,不需要进行交换(交换相当于移动了三次元素)
- 与选择排序对比
- 两者的时间复杂度都为O(n2)
- 在大多数情况下,插入排序都略优于选择排序
- 插入排序属于稳定排序算法,选择排序属于不稳定排序算法