希尔排序:基于插入排序的改进,前期以大步长分组进行插入排序,后期步长逐渐折半。时间复杂度为O(n^2)。
import java.util.Arrays;
public class Main {
public static void sort(int[] arr) {
// 从小到大排列
int n = arr.length;
for (int gap = n/2; gap > 0 ; gap/=2) {
for (int i = gap; i < n; i++) {
int tem = arr[i];
int j = 0;
for (j = i-gap; j >= 0 && tem < arr[j] ; j-=gap) {
arr[j+gap] = arr[j];
}
arr[j+gap] = tem;
}
}
}
public static void main(String[] args) {
int[] arr = {5,6,3,8,9,1,2,4,7};
sort(arr);
System.out.println(Arrays.toString(arr));
}
}