基本思想:将排序的一组数按某个增量d(n/2)分成若干组,每组中记录的下标相差d,对每组中全部元素进行直接 插入排序,然后再用一个较小的增量d/2对他进行分组,在每组中再进行直接插入排序。当增量减到1时,排序结束。
public class shellSort{
private static void main(String args[]){
int a={};
double d1=a.length;
int temp=0;
while(true){
d1=math.ceil(d1/2);
int d=(int)d1;
for(int x=0;x<d;x++){
for(int i=x+d;i<a.length;i+=d){
temp=a[i];
for(int j=i-d;j>=0&&temp<a[j];j-=d){
a[j+d]=a[j];
}
a[j+d]=temp;
}
}
if(d==1)break;
}
for(int i=0;a<a.length;i++){
System.out.println(a[i]);
}
}