动画演示
文字说明
代码
/**
* 希尔排序
*
* @param nums
* @return
*/
public static int[] paiXu2(int[] nums) {
int temp = 0;
// 控制希尔排序的增量
for (int i = nums.length / 2; i > 0; i = i / 2) {
//根据增量序列,找到每组比较序列的最后一个数的位置
for (int j = i; j < nums.length; j++) {
//根据该比较序列的最后一个数的位置,依次向前执行插入排序
for (int k = j - i; k >= 0; k -= i) {
if (nums[k] > nums[k + i]) {
temp = nums[k];
nums[k] = nums[k + i];
nums[k + i] = temp;
}
}
}
}
return nums;
}