栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

希尔排序原理(希尔排序法是怎么排的)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

希尔排序原理(希尔排序法是怎么排的)

普通插入排序:

将n个元素看成一个有序列表和一个无序列表,将无序列表中的数据插入到有序列表中。

 public static void insertSort(int[] arr){
        int insertIndex=0;
        int inserValue=0;
        //使用for循环完成
        for (int i = 1; i < arr.length; i++) {//从索引为1处开始,直到最后一个
            //首先定义需要插入的数的索引
            insertIndex = i ; // 即arr[1]的前面这个数的下标
            inserValue=arr[i];//待插入的数值

           //!!!!!注意能在while循环条件判断()里面加判断条件,就加。
            //!!!! 如果在while循环里面多添加一个if判断,  两者时间相差很大
           while (insertIndex-1>=0 && arr[insertIndex-1]>inserValue){
                  //此时不是交换,而是移位
                   arr[insertIndex]=arr[insertIndex-1];
                     insertIndex--;
           }
           //优化
              if (insertIndex!=i) {//insertIndex值没有改变过
                arr[insertIndex] = inserValue;
            }

        }

希尔排序,也叫缩小增量排序。缩小的是带插入元素与前面第几个位置之间的下标差。

 public static void shelltSort(int[] arr){
        int insertIndex=0;
        int inserValue=0;
//注意这里就是来缩小增量了,通过引入步长来改变
//步长开始为数组长度/2;后面不断/2,找到step=0,跳出循环
      for(int step=arr.length/2;step>0;step/=2){
        //使用for循环完成
//注意此时的i不再等于1,而是等于step
        for (int i = step; i < arr.length; i++) {//从索引为step处开始,直到最后一个
            //首先定义需要插入的数的索引
            insertIndex = i ; // 即arr[1]的前面这个数的下标
            inserValue=arr[i];//待插入的数值

           //!!!!!注意能在while循环条件判断()里面加判断条件,就加。
            //!!!! 如果在while循环里面多添加一个if判断,  两者时间相差很大
           while (insertIndex-step>=0 && arr[insertIndex-step]>inserValue){
                  //此时不是交换,而是移位
                   arr[insertIndex]=arr[insertIndex-step];
                     insertIndex-=step;
           }
           //优化
              if (insertIndex!=i) {//insertIndex值没有改变过
                arr[insertIndex] = inserValue;
            }

        }
    }

速度测试:

创建要给80000个的随机的数组,分别进行插入和希尔排序

希尔排序要明显由于插入排序。 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号