//采用移位法进行shell排序
public class ShellSort_optimize {
public static void main(String[] args) {
int[] arr = new int[]{8, 6, 9, 4, 0, 2, 7, 1, 3, 5};
shellSort_optimize(arr);
}
public static void shellSort_optimize(int[] arr) {
for (int gap = arr.length / 2; gap >= 0; gap /= 2) {
for (int i = gap; i < arr.length; i++) {
int j = i;
int temp = arr[i];//2
if (arr[j] < arr[j - gap]) {//2<8
while (j - gap >= 0 && temp < arr[j - gap]) {
arr[j] = arr[j - gap];//2=8 此时结果8, 6, 9, 4, 0, 8, 7, 1, 3, 5
j -= gap;//0
}
//当退出循环后 ,给temp找到插入的位置
arr[j] = temp;
}
}
}
}
}