public static void main(String[] args) {
int[] shellArr={8,5,9,6,7,4,1,2,3,0};
int arrLen=shellArr.length;
int[] distanArr=new int[arrLen/2];
//获取增量数组
for(int i=0;i<distanArr.length;i++){
arrLen=arrLen/2;
distanArr[i]=arrLen;
}
//对每一个增量进行对应的分组排序
for(int i=0;i<distanArr.length;i++){
int distan=distanArr[i];
if(distan<=0){
break;
}
//这里的连续排序每次排序针对的都是不同个分组的插入排序
for(int j=distan;j<shellArr.length;j++){
int data=shellArr[j];
int k=j-distan;
for(;k>=0;k=k-distan){
if(shellArr[k]>data){
shellArr[k+distan]=shellArr[k];
}else{
break;
}
}
shellArr[k+distan]=data;
System.out.println("差距为"+distan+"的第"+(j-distan+1)+"次排序的结果:");
for(int g=0;g<shellArr.length;g++){
System.out.print(shellArr[g]+" ");
}
System.out.println();
}
}
}
1.希尔排序
最新推荐文章于 2022-08-21 19:39:41 发布