希尔排序

希尔排序

希尔排序法基本思想

希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至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);

    }
}

原文地址:https://www.cnblogs.com/huangshen/p/13324451.html