思路:其实就是增量分割子序列+直接插入排序
Java代码如下:
public void sort(int[] a){
int d = a.length;
while(true){
d = d/2;
for(int i = 0;i<d;i++ ){
for (int j = i+d;j<a.length;j=j+d){
if(a[j-d]>a[j]){
int tmp = a[j];
int k2 = j;
for (int k =j-d;k>=0&&a[k]>tmp;k=k-d)
{
a[k+d] =a[k];
k2=k;
}
a[k2] = tmp;
}
}
}
if(d == 1){break;}
}
}