希尔排序

Posted huangshen

tags:

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

希尔排序

希尔排序法基本思想

希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止

技术图片

技术图片

public class ShellSort {
    public static void main(String[] args) {
        shellSort(creat());
    }

    public static int[] creat() {

        int[] arr = new int[10000000];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = new Random().nextInt(500000);
        }
        return arr;
    }
    public static void shellSort(int [] arr){
        long star=System.currentTimeMillis();
        for (int step = arr.length; step >0 ; step/=2) {
            for (int j = step; j <arr.length ; j++) {
               int temp=arr[j];
               int index=j;
               while (index-step>=0&&temp<arr[index-step]){
                   arr[index]=arr[index-step];
                   index-=step;
               }
               arr[index]=temp;
            }

        }
        long end=System.currentTimeMillis();
        System.out.println(end-star);

    }
}

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

希尔排序

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

希尔排序图解与代码

算法-java代码实现希尔排序

希尔排序JAVA代码

《算法》笔记 3 - 选择排序插入排序希尔排序