希尔排序相当于特殊的插入排序,即相当于将数组分成几个间隔段,在每个间隔段内进行插入排序,最终间隔为1;将其完全排序,采用分治的方法
package com.Sort;
import java.util.Arrays;
public class ShellSort {
public static void shellSort(int[] arr) {
int n = arr.length;
// 设置每个元素比较的间隔
int gap = n/2;
// 根据间隔对每个分组进行插入排序,直到gap = 1;
while (gap > 0){
for( int i = gap; i < n; i ++){
int temp = arr[i];
int j = i;
// 对当前的分组进行排序
while(j >= gap && arr[j - gap] > temp){
arr[j] = arr[j - gap];
j -= gap;
}
arr[j] = temp;
}
// gap每次递减2倍
gap = gap/2;
}
}
public static void main(String[] args) {
int[] arr = {2,5,3,6,9};
shellSort(arr);
System.out.println(Arrays.toString(arr));
}
}