public class ShellSort {
public static void main(String[] args) {
int[] arr = new int[]{3,5,2,7,1,6,4,6,3};
shellSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void shellSort(int[] arr){
int increment = arr.length;
int temp;
while(increment > 1){
//这个必须放在循环的第一步而不是最后一步,因为第一次increment=1是需要走完循环的
increment = increment/3 + 1;
for(int i = increment;i < arr.length;i++) {
if (arr[i] < arr[i - increment]) {
temp = arr[i];
int j = i - increment;
for (; j >= 0 && arr[j] > temp; j -= increment) {
arr[j + increment] = arr[j];
}
arr[j + increment] = temp;
}
}
}
}
}
java-希尔排序
最新推荐文章于 2025-10-19 21:39:30 发布
