插入排序

插入排序

插入排序属于内部排序方法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。

基本思想

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

也就是将需要排序的数据分成两个序列,原序列和新序列,拿着原序列中的数据,与新序列中的数据依次进行比较,然后放在合适的位置上。

图解思路图

代码

public class InsertSortPro {

    public static void main(String[] args) {
        int[] arr = {101, 34, 111, 4};
        insertSort(arr);

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    public static void insertSort(int[] arr) {

        for (int i = 1; i < arr.length; i++) {
            // 定义待插入的数
            int insertVal = arr[i];
            // 待插入数的索引
            int insertIndex = i-1; //1-1

            //找到insertval 找到插入的位置
            // 说明
            //1。insertIndex>=0 保证给insertval找插入位置,不越界
            //2。insertVal<arr[insertIndex] 待插入的数据,还没有找到要插入的位置
            //3。就需要将arr[indexIndex]后移
            //4。
            while (insertIndex >= 0 && insertVal < arr[insertIndex]) {// 保证
                arr[insertIndex + 1] = arr[insertIndex];
                insertIndex--;
            }
            // 当退出while循环后,insertIndex需要++
            arr[insertIndex + 1] = insertVal;
        }

    }

}

posted @ 2023-06-03 01:59  King-DA  阅读(22)  评论(0)    收藏  举报