数据结构--希尔排序 java

希尔排序思想:设置增量d1,所有距离d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;
然后取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1

从插入排序发展而来,插入排序相当于希尔排序的增量为1的特殊情况

java代码实现:
  public class ShellSort {
    public static void shellSort(int[] a ,int[] d){
    int i,j,k,m,temp,span;
    int n =a.length;
    int L = d.length;
    for(m=0;m<L;m++){//大的循环做L趟
    span=d[m];
    for(k=0;k<span;k++){//每趟循环都对“各个小组”进行排序
    for(i=k;i<n-span;i+=span){
    temp = a[i+span];
    j=i;
    while(j>=k&&temp<a[j]){
    a[j+span]=a[j];
    j=j-span;
   
    }
    a[j+span]=temp;
    }
   
    }
   
    }
    }
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = {-1,4,1,-3,3,5,7,9,8,2,4,6,8,0};//?测试用例
int d[] = {5,3,1};
shellSort(a,d);
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
}

}

你可能感兴趣的:(java,数据结构,希尔排序)