数据结构和算法(十三)排序算法之插入排序

Posted 思想累积

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构和算法(十三)排序算法之插入排序相关的知识,希望对你有一定的参考价值。

1、插入排序介绍

插入排序属于内部排序法,一般也被称为直接插入排序,对于少量元素排序来说是一个有效的算法。它是对要排序的元素以插入的方式找到元素的适当位置,达到排序的目的

2、插入排序思想:

​ 把 n 个要排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含 n - 1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使它成为新的有序表

​ 在待排序的元素中,假设前面 n - 1(其中 n >= 2)个数是排好序的

3、插入排序代码实现

public static void insertSort(int[] arr) {
    for(int i = 1; i < arr.length; i++) {
        // 临时变量,用来存储要要插入的值
        int insertValue = arr[i];
        // 要插入值前一个位置的下标
        int insertIndex = i - 1;

        // 判断下标未越界还在找要插入位置,并且要插入的值是否小于 arr[insertIndex] 的值
        while (insertIndex >= 0 && insertValue < arr[insertIndex]) {
            // 将要插入位置的值赋值给后一个
            arr[insertIndex + 1] = arr[insertIndex];
            // 继续向前找,前面的是已经排序好的数据,直到找到合适位置或者 index 小于 0
            insertIndex --;
        }
        // 已经找到合适位置后将要插入的值 insertValue 赋值给 arr[insertIndex + 1]
        arr[insertIndex + 1] = insertValue;
    }
    System.out.println(Arrays.toString(arr));
}

以上是关于数据结构和算法(十三)排序算法之插入排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之冒泡选择插入排序(Java)

数据结构与算法之排序算法:插入排序

python 数据结构与算法之排序(冒泡,选择,插入)

面试之插入排序算法

插入排序算法之直接插入排序和希尔排序

[Java数据结构与算法]简单排序之插入排序