手写希尔排序(未优化)
public class ShellSort {
public static void main(String[] args) {
int[] arr = {9,5,8,4,7,3,6,2,1};
sort(arr);
print(arr);
}
static void sort(int[] arr){
int interval = arr.length/2;
for(int y=interval;y>=1;y/=2){
System.out.println(y);
for(int x=0;x<=y;x++){
for(int i=x;i<=arr.length-1-y;i+=y){
for(int j=i+y;j>=0&&j-y>=0;j-=y){
if(arr[j]<arr[j-y]){
swap(arr,j,j-y);
print(arr);
System.out.println();
}
}
}
}
}
}
static void swap(int[] arr,int x,int y){
int i = arr[x];
arr[x] = arr[y];
arr[y] = i;
}
static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}