//希尔排序:
//基本思想:
//在要排序的一组数中,根据某一增量分为若干子序列,并对子序列分别进行插入排序。
//然后逐渐将增量减小,重复上述过程。
//直至增量为1,此时数据序列基本有序,最后进行插入排序。
//过程
image
//平均时间复杂度:O(n^1.5)
public class ShellSort {
public static void main(String[] args) {
int[] arr = new int[]{6,2,4,1,9,3,6,7,0};
System.out.println("排序前=====");
print(arr);
System.out.println("");
System.out.println("排序后=====");
int[] result = shellSort(arr);
print(result);
}
public static int[] shellSort(int[] arr){
int temp = 0;
int incr = arr.length;
while(true){
incr = incr/2;
for(int k=0; k
for(int i=k+incr; i
for(int j=i; j>k; j-=incr){
if(arr[j]
temp = arr[j];
arr[j] = arr[j-incr];
arr[j-incr] = temp;
}else{
break;
}
}
}
}
if(incr==1){
break;
}
}
return arr;
}
public static void print(int[] arr){
for(int i=0; i
System.out.print(arr[i]+",");
}
}
}