插入排序

1.插入排序简介
插入排序(Insertion sorting) 的基本思想是:把n个待排序的元素看成为一个有序表和一 个无序表 ,开始时有序表中只包含一个元素 ,无宇表中包含有n -1个元素 , 排序过程中每次从 无序表中取出第一个元素 ,把它的排序码依次与有序表元素的 排 序 码进行比较 , 将它插入到有序表中的适当位置 ,使之成为新的有序表 。

2.插入排序图解

在这里插入图片描述

3.代码

public class InsertSort {
    public static void main(String[] args) {
        int[] arr = {101,34,119,1};
        InsertSort.insertSort(arr);
    }

    /**
     * 插入排序
     * @param arr
     */
    public static void insertSort(int[] arr){
        //{101,34,119,1}
        //int i = 1:第1个数为有序表
        for (int i = 1;i<arr.length;i++) {
            //待插入的数
            int insertVal = arr[i];//insertVal在第一轮排序时是34
            //insertVal:待插入的位置
            int insertIndex = i-1;
            //insertVal<arr[insertIndex]:表示insertVal没有找到位置
            while (insertIndex>=0&&insertVal<arr[insertIndex]){
                arr[insertIndex+1]=arr[insertIndex];//arr[insertIndex]后移,给insertVal让出一个位置
                //待插入位置前移
                insertIndex--;
            }
            //找到位置时退出循环
            //insertIndex+1:while中insertIndex--后再判断,所以加一
            arr[insertIndex+1]=insertVal;
            System.out.println("第"+i+"趟排序:"+Arrays.toString(arr));

        }
    }
}
原文地址:https://www.cnblogs.com/isalo/p/13095239.html