希尔排序算法

Posted 1点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔排序算法相关的知识,希望对你有一定的参考价值。

希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为1。希尔排序通过这种策略使得整个数组在初始阶段达到从宏观上看基本有序,小的基本在前,大的基本在后。然后缩小增量,到增量为1时,其实多数情况下只需微调即可,不会涉及过多的数据移动。

 

代码实现:

 

public class Shell 
 {
    public static void sort(Coparable[]  a) 
     {
          int N=a.length;
          int h=1;
          //分成若干组
          while (h<N/3)
              h=3*h+1;

          while(h>=1) 
           {
              for(int i=h;i<N;i++)
              {
                   for(int j=i;j>=h;&&less(a[j],a[j-h]);j-=h;)
                   exch(a,j,j-h);

                }
              h=h/3;
                }
           }
 }

 

以上是关于希尔排序算法的主要内容,如果未能解决你的问题,请参考以下文章

希尔排序图解与代码

算法-java代码实现希尔排序

希尔排序的介绍和希尔排序基本思想以及代码实现

排序算法——希尔排序的图解代码实现以及时间复杂度分析

排序算法之希尔排序

希尔排序算法