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

插入排序的加强版

数据结构与算法——希尔排序_第1张图片

代码实现:

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;
    }

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

你可能感兴趣的:(数据结构与算法,java)