/*********希尔排序先从0定义再到gap*********************/
public static int[] shell2(int []num,int len){
int j=0;
for(int gap=len/2;gap>0;gap/=2){
for(int i=0;i<len-gap;i++){
j=i;
while((j>=0)&&(num[j]>num[j+gap])){
num[j]=num[j+gap]+num[j];
num[j+gap]=num[j]-num[j+gap];
num[j]=num[j]-num[j+gap];
j=j-gap;
}
System.out.print(1+",");
}
}
return num;
}
/*******************希尔排序先从gap定义再到0*********************/
public static int[] shell(int []num,int len){
for(int gap=len/2;gap>0;gap/=2){
for(int i=gap;i<len;i++){
for(int j=i-gap;(j>=0)&&(num[j]>num[j+gap]);j-=gap){
num[j]=num[j+gap]+num[j];
num[j+gap]=num[j]-num[j+gap];
num[j]=num[j]-num[j+gap];
}
System.out.print(1+",");
}
}
return num;
}
本文深入探讨了希尔排序算法的两种实现方式:一种是从0到间隔(gap),另一种是从间隔(gap)到0。通过具体的Java代码示例展示了希尔排序的工作原理,并提供了完整的排序过程。
18万+

被折叠的 条评论
为什么被折叠?



