publicclass shellSort {
publicshellSort(){
int a[]={1,54,6,3,78,34,12,45,56,100};
double d1=a.length;
int temp=0;
while(true){ //间隔为d
d1= Math.ceil(d1/2);
int d=(int) d1;
for(int x=0;x<d;x++){ //每一个间隔里面(进行d-1次简单插入排序),起点从0到d-1
for(int i=x+d;i<a.length;i+=d){ //(简单插入排序)第x次循环中进行排序,需要排序的元素从x+d开始()
int j=i-d;
temp=a[i];
for(;j>=0&&temp<a[j];j-=d){ //a[i]与前面的元素进行比较
a[j+d]=a[j];
}
a[j+d]=temp;
}
}
if(d==1)
break;
}
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
}
}
8bee067ef502 6 月前
4fc9d20066ca 6 月前