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));
}
posted on 2021-07-13 15:04  沐雨清晨  阅读(22)  评论(0编辑  收藏  举报