package test;
public class Main{
public static void shellsort(int[] arr) {
//step:步长
for(int step=arr.length/2;step>0;step=step/2) {
//对一个补偿空间进行比较[step,arr.length]
for(int i=step;i<arr.length;i++) {
int value=arr[i];
int j;
//对步长区间中具体的元素进行比较
for(j=i-step;j>=0&&arr[j]>value;j-=step) {
//j为左区间的取值,j+step为右区间与左区间的对应值
arr[j+step]=arr[j];
}
//此时step为一个负数,[j+step]为左区间上的初始交换值
arr[j+step]=value;
}
}
}
public static void main(String[] args){
int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
shellsort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}