首页 > 编程语言 > 详细

希尔排序算法

时间:2018-04-10 15:47:28      阅读:185      评论:0      收藏:0      [点我收藏+]

希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为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;
                }
           }
 }

 

希尔排序算法

原文:https://www.cnblogs.com/guangzhou11/p/8779637.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!