介绍
分析
基本思想:
1 | 通过构建有序序列,对未排序数据,在已排序序列中从后向前扫描,找到对应位置并插入该数据,使数据形成有序排列 |
算法描述:
- 第1个元素,作为有序序列
- 从数组中获取下一个元素,在已排序的元素序列中从后向前扫描,并判断给元素与已排序元素的大小
- 若排序序列的元素大于新元素,则将排序序列该元素移到下一位置
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置
- 重复步骤2-5,直到处理完成
C实现
1 | /** |
Swift实现
1 | class InsertSort { |
总结
时间复杂度:
- 最差O(n^2)
- 最优O(n)
- 平均O(n^2)
空间复杂度:
- O(1)
稳定性:
- 稳定