003-排序算法-直接插入排序

一、概述

  直接插入排序(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/

原文地址:https://www.cnblogs.com/bjlhx/p/10935924.html