希尔排序
算法复杂度:O(n2)
不稳定的算法
package com.Leetcode.排序;
import java.util.Arrays;
/**
* @author
* @date 2020/11/21
*/
public class ShellSort {
public static void main(String[] args) {
int[] a = new int[]{7,8,8,6,5,59,4,3,2,1,0};
shellSort(a);
System.out.println(Arrays.toString(a));
}
private static void shellSort(int[] a) {
//shell的步长gap
for(int gap=a.length/2;gap>=1;gap=gap/2){
insertsort(a,gap);
}
}
private static void insertsort(int[] a, int gap) {
for (int i= gap;i<a.length;i=i+gap){
int insert = a[i];
int j = i-gap;
for(;j>=0;j=j-gap){
if (insert < a[j]){
a[j+gap] =a[j];
} else {
break;
}
}
a[j+gap] = insert;
}
}
}