JAVA十大排序中的-(插入排序)

前奏
是相当于一种时间复杂度中的平方阶概念的数组排序算法
思路
思路:
   1:创建一个外层循环默认索引从1开始,判断条件直到小于总长度
   2:将当前外层循环索引元素存储到一个变量中保存,并将当前外循环索引页保存到一个变量上
   3:创建一个内循环while遍历条件 (外循环索引-1>=0)之间中的排好序的索引元素从后往前遍历
   4:循环判断当前内循环指定的索引元素与外循环元素是否大于
               如果大于就将当前内循环索引元素移动至内循环+1索引位置上 依次类推  并再一次更新内循环索引=内循环索引--
               如果小于就退出内循环 然后将外循环索引对应的元素存储到内循环索引+1上即可
课外仅供参考
课外:如果与一组8000个数据的数组排序的情况下 时间差不多10---20毫秒之间
     如果与一组80000个数据的数组排序的情况下 时间差不多500---800毫秒之间
     如果与一组800000个数据的数组排序的情况下 时间差不多60几秒中
     如果是一组接近于有序的80000000个数据 时间差不多50毫秒不到

特点:中小规模基本有序列表用插入很高效,也就是数据有序层度越高,插入排序算法就越高效
图解1

在这里插入图片描述

代码

提示:如果将从小到大顺序变成从大到小顺序,改对应的将> 改成<
注意:待插入的元素要预先保存起来不然会被移动指针往后移动给覆盖掉

//插入排序版本3
    public static void insertSortVersion3(int [] sort){

        //创建2个变量一个存储插入的元素一个存储插入的索引
        int insertElement;
        int insertIndex;

        //创建外循环比作与未比较的区域索引元素范围
        for(int index=1;index<sort.length;index++){

            //创建当前未比较区域索引的元素及索引
            insertElement=sort[index];
            insertIndex=index;

            //循环一个内循环区域(有序列表区域)
            while(--insertIndex>=0&&insertElement<sort[insertIndex]){
                //就将有效列表区域中对应的insertIndex索引元素往后移动一下
                sort[insertIndex+1]=sort[insertIndex];
            }
            //将当前带插入的元素插入到指定索引下的有序列表区域
            sort[insertIndex+1]=insertElement;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值