数据结构与算法——希尔排序

来源:互联网 发布:hash-256函数算法原理 编辑:程序博客网 时间:2024/05/27 16:41

插入排序的加强版

这里写图片描述

代码实现:

public static long[] sort(long[] arr) {        if (arr == null) {            return null;        }        int h = 1;//初始化间隔        while (arr.length / 3 > h) {            h = h * 3 + 1;        }        while (h > 0) {            long tmp = 0;            for (int i = h; i < arr.length; i++) {                tmp = arr[i];                int j = i;                while (j > h - 1 && arr[j - h] >= tmp) {                    arr[j] = arr[j - h];                    j -= h;                }                arr[j] = tmp;            }            h = (h - 1) / 3;        }        return arr;    }

总结:相对于直接插入排序,希尔排序可以对部分数据移动,而不是一个个移动,效率上更好