码迷,mamicode.com
首页 > 编程语言 > 详细

图解插入排序

时间:2020-01-31 12:07:14      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:img   长度   mit   有序数组   插入   位置   一个   system   动作   

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

 

技术图片

 

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

  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));

 

图解插入排序

标签:img   长度   mit   有序数组   插入   位置   一个   system   动作   

原文地址:https://www.cnblogs.com/aigeileshei/p/12244941.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!