/**
* 希尔排序:是在插入排序的基础上优化的一种排序
* 首先,把要排序的数按增量间隔分成小序列,这些小序列按直接插入排序排好,然后缩减增量间隔
*
*/
int[] a= {2,1,4,7,8,3};
int n= a.length;
//分割成小序列
for(int gap=n/2;gap>0;gap=gap/2){
//每个序列的开始值
for(int i=0;i<gap;i++){
int j=i;
//直接插入排序排分割的序列
for(;j<n;j+=gap){
int temp=a[j];
int k=j-gap;
while(k>=0&&temp<a[k]){
System.out.println(k);
a[k+gap]=a[k];
k-=gap;
}
a[k+gap]=temp;
}
}
}
希尔排序
最新推荐文章于 2023-09-23 16:26:22 发布