希尔排序就是插入排序的升华版,具体可以百度。。。。
代码:
public class ShellSort {
public static void main(String[] args) { int[]a={1,6,5,4,3,2,7};
//希尔排序
int d=a.length;
while(true)
{
d=d/2;
for(int x=0;x<d;x++)
{
for(int i=x+d;i<a.length;i=i+d)
{
if(a[i]<a[i-d])//0~i-1位为有序,若第i位小于i-1位,继续寻位并插入,否则认为0~i位也是有序的,忽略此次循环,相当于continue
{
int temp=a[i];
int j;
for(j=i-d;j>=0&&a[j]>temp;j=j-d)
{
a[j+d]=a[j];
}
a[j+d]=temp;
}
}
}
if(d==1)
break;
}
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
}
}
测试结果: