希尔排序就是把数列进行分组(不停使用插入排序),直至从宏观上看起来有序,最后插入排序起来就容易了(无须多次移位或交换)。
public int[] shellSort(int a[]){
for(int gap=a.length/2;gap>0;gap=gap/2){
for(int i=gap; i<a.length;i++){
int j=i;
while(j-gap>=0&& a[j-gap]>a[j]){
swap(a, j-gap, j);
j=j-gap;
}
}
System.out.println("gap:"+gap+","+Arrays.toString(a));
}
return a;
}
网友评论