排序----插入排序

Posted ntbll

tags:

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

一.原理

  1.1.动态演示图

  技术图片

  1.2.动态图讲解

  插入排序可以将数组看成两部分,一部分有序,一部分无序;默认下标为0有序,后面无序元素逐一与有序部分比较插入到指定位置,直至数组有序。

  1.3.数据样式

  原始数据:8 4 7 10 6 5 4 8

  第一次排序过程:4 8 7 10 6 5 4 8

  第二次排序过程:4 7 8 10 6 5 4 8

     ......

二.代码实现

public class ArraySortUtils {

    /**
     * 返回数组的字符串
     * @param array
     * @return
     */
    public static String arrayToString(int[] array){
        StringBuilder sb = new StringBuilder("[");
        for (int i = 0; i < array.length; i++) {
            if( i != (array.length - 1)){
                sb.append(array[i] + ",");
            }else{
                sb.append(array[i] + "]");
            }
        }
        return sb.toString();
    }


    /**
     * 插入排序
     * @param array
     */
    public static void insertSort(int[] array){

        //将数组看成两部分index>0 index=0 默认index=0有序,将index>0的元素插入到有序中
        for(int i = 1; i < array.length;i++){
            //记录要插入的数据
            int record = array[i];
            //将要插入数据与有序部分比较,找到要插入的下标
            int j;
            for(j = i - 1; j >= 0 && record < array[j]; j--){
                array[j+1] = array[j];
            }
            array[j+1] = record;
            System.out.println("第" + i +"次排序后的结果:" + arrayToString(array));
        }
    }
}

 

三.演示结果

public class ArraySortUtilsDemo {

    public static void main(String[] args) {
        //4 8 7 10 6 5 4 8
        //4 7 8 10 6 5 4 8
        int[] array = new int[]{8,4,7,10,6,5,4,8};
        System.out.println("排序前:" + ArraySortUtils.arrayToString(array));
        //ArraySortUtils.bubbleSort(array);
        //ArraySortUtils.quickSort(array);
        ArraySortUtils.insertSort(array);
        System.out.println("排序后:" + ArraySortUtils.arrayToString(array));
    }
}

演示结果与数据演示推理一样:

排序前:[8,4,7,10,6,5,4,8]
第1次排序后的结果:[4,8,7,10,6,5,4,8]
第2次排序后的结果:[4,7,8,10,6,5,4,8]
第3次排序后的结果:[4,7,8,10,6,5,4,8]
第4次排序后的结果:[4,6,7,8,10,5,4,8]
第5次排序后的结果:[4,5,6,7,8,10,4,8]
第6次排序后的结果:[4,4,5,6,7,8,10,8]
第7次排序后的结果:[4,4,5,6,7,8,8,10]
排序后:[4,4,5,6,7,8,8,10]

以上是关于排序----插入排序的主要内容,如果未能解决你的问题,请参考以下文章

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

Java插入排序实现代码

排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)

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

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