public static void shellSort(int[] arr) {
int i, j, d;
for(d = arr.length/2; d > 0; d /= 2) {
for(i = d; i < arr.length; i++) {
//内嵌直接插入排序
if(arr[i] < arr[i-d]) {
int tem = arr[i];
for(j = i - d; j >= 0; j -= d) {
if(tem < arr[j]) {
arr[j+d] = arr[j];
} else {
break;
}
}
arr[j+d] = tem;
}
}
}
}
public static void main(String[] args) {
int[] arr = {2, 13, 35, 12, 36, 4, 66, 93, 60};
System.out.println("before:" + Arrays.toString(arr));
shellSort(arr);
System.out.println("after:" + Arrays.toString(arr));
}
}
结果:
before:[2, 13, 35, 12, 36, 4, 66, 93, 60]
after:[2, 4, 12, 13, 35, 36, 60, 66, 93]