希尔排序(Shell's sort),又称缩小增量排序,由D.L.Shell于1959年提出。希尔排序的一个问题就是步长因子的选择,没有统一的标准,希尔排序不稳定。
public static int[] shellSort(int[] a){
int length=a.length;
for(int step_size=length/2;step_size>=1;step_size/=2)
{
for(int i=0;i<step_size;i++)
{
for(int j=i+step_size;j<length;j+=step_size)
{
int index=j-step_size;
int tmp=a[j];
while(index>=i && a[index]>tmp)
{
a[index+step_size]=a[index];
index=index-step_size;
}
a[index+step_size]=tmp;
}
}
}
return a;
}