图解插入排序

Posted aigeileshei

tags:

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

插入排序,见名知意思,就是将元素插入到它应该待的位置,来实现排序。什么叫应该待的位置呢?通俗点说,插入排序的原理是将一个元素插入到有序数组,不断地扩展有序数组的长度实现整个数组的有序。

 

技术图片

 

插入排序进行的移位操作有两个:

  1、是将要插入元素清除,其他与有序数组无关元素后移

  2、是在找到了插入位置之后的插入动作涉及的移位

寻找插入位置的时候要注意:

  在有序数组中从上往下检索,一旦找到匹配的一定要终止寻找,因为有序数组是逆序的,上面位置符合判断条件则下一个位置一定也符合判断条件,会导致位置定位错误。

 

示例代码:

        int[] arr = new int[]{3, 5, 11, 2, 8};
        for (int i=0; i< arr.length-1; i++){
            int insertEle = arr[arr.length-1];
            int sortArrLimit = i;
            int willSortArrLimit = i+1;
            int tempPosition = willSortArrLimit;

            //其他元素后移
            for(int j=arr.length-1; j> willSortArrLimit; j--){
                arr[j] = arr[j-1];
            }

            //寻找插入位置
            for (int j= 0; j<=sortArrLimit; j++ ){
                if (insertEle > arr[j]){
                    tempPosition = j;
                    break;//找到位置之后要中断掉,有序数组是个逆序的数组
                }
            }

            //执行插入动作
            for (int j=willSortArrLimit; j>tempPosition; j--){
                arr[j] = arr[j-1];
            }
            arr[tempPosition] = insertEle;
        }
        System.out.println(Arrays.toString(arr));

 

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

八大排序算法C语言过程图解+代码实现(插入,希尔,选择,堆排,冒泡,快排,归并,计数)

图解数据结构与算法——插入排序

基础排序算法总结(代码+图片分析)

希尔排序图解与代码

图解排序算法:希尔排序

scratch图解排序算法:插入排序冒泡排序选择排序归并排序快速排序堆排序