一、概述
直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。
排序方法 | 时间复杂度(平均) | 时间复杂度 (最坏) | 时间复杂度(最好) | 空间复杂度 | 稳定性 | 高效场景 |
---|---|---|---|---|---|---|
插入排序 | O(n^2) | O(n^2) | O(n) | O(1) | 稳定 | 小规模数据或基本有序时 |
1.1、 算法说明
第0位独自作为有序数列,从第1位开始向后遍历。
1.2、算法实现
public static void insertSort(int[] array) { for (int i = 1; i < array.length; i++) {//第0位独自作为有序数列,从第1位开始向后遍历 if (array[i] < array[i - 1]) {//0~i-1位为有序,若第i位小于i-1位,继续寻位并插入,否则认为0~i位也是有序的,忽略此次循环,相当于continue int temp = array[i];//保存第i位的值 int k = i - 1; for (int j = k; j >= 0 && temp < array[j]; j--) {//从第i-1位向前遍历并移位,直至找到小于第i位值停止 array[j + 1] = array[j]; k--; } array[k + 1] = temp;//插入第i位的值 } } }
代码地址:地址 中的rithm-001-sort中 InsertSort
参看地址:https://baike.baidu.com/item/%E7%9B%B4%E6%8E%A5%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F/8255911?fr=aladdin
https://lingwei.fun/2018/08/04/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F/
大