希尔排序

92 阅读1分钟
  • 基本思想:与插入排序思想一致,大的往后挪,小的到前面的位置。
  • 希尔排序的优化:步数可以不是1,实现一次纠正多个逆序度

参考:www.runoob.com/w3cnote/she…

public class ShellSort {
    public static void sort(int[] nums) {
        if (nums == null || nums.length < 2) {
            return;
        }

        // 精髓:采用多步递进的方式,一次可以纠正多个逆序度
        for (int step = nums.length / 2; step >= 1; step--) {
            for (int i = step; i < nums.length; i++) {
                int tmp = nums[i];
                int index;
                for (index = i - step; index >= 0 && nums[index] > tmp; index -= step) {
                    nums[index + step] = nums[index];
                }
                nums[index + step] = tmp;
            }
        }
    }
}