- 基本思想:与插入排序思想一致,大的往后挪,小的到前面的位置。
- 希尔排序的优化:步数可以不是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;
}
}
}
}