首页 > 代码库 > 从排序开始学JAVA(2)——希尔排序

从排序开始学JAVA(2)——希尔排序

希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。

基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。

代码实现:

 1 package sort; 2  3 public class ShellSort { 4     public static void main(String[]args){ 5         int[]array={49,38,65,97,76,13,27,49,55,4}; 6         double length=array.length; 7          8         int temp=0; 9         while(true){                                //用d来判断最外层循环次数10            length=Math.ceil(length/2);11            int d=(int) (length);12                 for(int x=0; x<d;x++){13                     for(int i=x+d;i<array.length;i+=d){14                         temp=array[i];15                         int j=i-d;16                         for(;j>=0&&temp<array[j];j-=d)      //插入排序17                             array[j+d]=array[j];18                         array[j+d]=temp;19                     20                     }21                     22                 }23             24             if(d==1) break;25 26     }27         for(int i=0;i<array.length;i++)28             System.out.print(array[i]+" ");29     }30         31 32 }

 

从排序开始学JAVA(2)——希尔排序