package Sort;
import java.util.Arrays;
/*希尔排序 不稳定排序
时间复杂度:
最好 : O(n)
平均 : O(n^1.3)
最坏 : O(n^2)
空间复杂度: O(1)
* */
public class shellSort {
public static void sort(int[] arr) {
int gap = arr.length / 2;
while (gap > 1) {
inert(arr,gap);
gap = gap / 2;
}
inert(arr,1);
}
private static void inert(int[] arr, int gap) {
for (int i = 1; i < arr.length; i++) {
int cur = arr[i];
int j = i - gap;
for (; j >= 0 && arr[j] > cur; j-=gap) {
arr[j + gap] = arr[j];
}
arr[j + gap] = cur;
}
}
public static void main(String[] args) {
int[] arr = {9,5,2,7,3,6,8,1,7,4,10,24,0};
System.out.println(Arrays.toString(arr));
sort(arr);
System.out.println(Arrays.toString(arr));;
}
}