int[] arr = {1, 52, 12, 36, 45,6,4,32,12,15,34,76};
// 希爾排序
shellSort(arr);
// 希爾排序
private static void shellSort(int[] arr) {
if(arr==null||arr.length<=1){
return;
}
int len = arr.length;
int tem ;
int gap = len/2; //增量,或者一個分組的數量
while (gap>0){
for (int i = gap; i < len; i++) {
int preIndex = i-gap;
tem = arr[i];
// 加一個插入排序
while (preIndex>=0&& arr[preIndex]>tem){
arr[preIndex+gap] = arr[preIndex];
preIndex = preIndex-gap;
}
arr[preIndex+gap] = tem;
}
gap=gap/2;
}
System.out.println(Arrays.toString(arr));
}