前言

  本篇博客是在伍迷兄的博客基础上进行的,其博客地址点击就可以进去,里面好博客很多,我的排序算法都来自于此;一些数据结构方面的概念我就不多阐述了,伍迷兄的博客中都有详细讲解,而我写这些博客只是记录自己学习过程,加入了一些自己的理解,同时也希望给别人提供帮助。

前提故事

   骚年在上次与博主进行了直接插入排序的讨论后,找到了博主,说:“博主,对于直接插入排序,我有重大的发现”,博主想了想,就问:“什么发现?”,骚年:“我发现了如下两点”

    1)当序列的个数比较少时,直接插入排序效率高;这个好理解,个数比较少,那么插入的次数也就少了,博主就说:“恩,这个发现不难,却也需要细心”。

    2)如果序列本身就是基本有序,那么直接插入排序效率高;博主:“嗯?”,骚年解释道:“你看直接插入排序的核心代码:”

      

  1.      for(int i=1; i<len; i++){
  2. for(int j=i-1; j>=0&&arr[j]>arr[j+1]; j--){
  3. swap(arr,j,j+1);
  4. }
  5. }

    骚年接着道:“如果序列有序,那么j>=0&&arr[j]>arr[j+1]条件就是不满足的,插入操作就不会执行,效率自然就高了。”

    博主:“然后了?”。

    骚年:“那么我们是不是可以在这两点上做点事,来提高直接插入排序在普通序列上的效率了?”。

    上述两个条件过于苛刻,现实中记录少或者基本有序都属于特殊情,有条件当然是好,条件不存在,我们创造条件,也是可以去做的;骚年与博主进行了研究与讨论,我们可以对序列进行分组,分割成若干个子序列,然后对每个子序列分别进行直接插入排序,当整个序列都基本有序时,注意只是基本有序时,再对全体记录进行一次直接插入排序

    此时一定有人开始疑惑了。这不对呀,比如我们现在有序列是{5,3,7,9,1,6,4,8,2},现在将它分成三组,{5,3,7}, {9,1,6},{4,8,2},哪怕将它们各自排序排好了,变成{3,5,7},{1,6,9},{2,4,8},再合并它们成 {3,5,7,1,6,9,2,4,8},此时,这个序列还是杂乱无序,谈不上基本有序,要排序还是重来一遍直接插入有序,这样做有用吗?需要强调一下, 所谓的基本有序,就是小的关键字基本在前面,大的基本在后面,不大不小的基本在中间,像{2,1,3,6,4,7,5,8,9}这样可以称为基本有序了。 但像{3,5,7,1,6,9,2,4,8}这样的7在第三位,2在倒数第三位就谈不上基本有序。
        那么问题就来了,我们分割待排序记录的目的是减少待排序记录的个数,并使整个序列向基本有序发展。而如上面这样分完组后,就各自排序的方法达不到我们的要求。因此,我们需要采取跳跃分割的策略:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到的结果是基本有序而不是局部有序

基本思想

  将整个序列按照相距某个“增量”进行拆分,然后逐个对子序列进行直接插入排序,使得得到的结果基本有序,最后对基本有序的序列进行一次直接插入排序,使得整个序列有序

代码实现

  java实现

  1. /**
  2. * 希尔排序
  3. * @param arr 目标序列
  4. */
  5. public static void shellSort(int[] arr){
  6. int len = arr.length;
  7. for(int gap=len/2; gap>=1; gap=gap/2){ //拆分整个序列,元素间距为gap(也就是增量)
  8. //对子序列进行直接插入排序
  9. for(int i=gap+1; i<len; i++){
  10. for(int j=i-gap; j>=0&&arr[j]>arr[j+gap]; j=j-gap){
  11. swap(arr,j,j+gap);
  12. }
  13. }
  14. }
  15. }

执行过程模拟

  1)程序开始执行,初始序列为{5,3,7,9,1,6,4,8,2},如下图:

  2)初始gap=len/2=4

    2.1)i=gap=4,初始j=0;比较arr[j]与arr[j+gap],即arr[0]与arr[4],如下图:

      j=j-gap=-4,跳出,i++,i=5

    2.2)i=5,j=i-gap=1,arr[1]=3 < arr[5]=6,不交换数据,如下图:

    aaarticlea/png;base64,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" alt="" />

      j=j-gap=-3,跳出,i++,i=6

    2.3)同理,当i=6,7时,序列如下图:

    2.4)当i=8时,序列如下:

    那么gap=4时,最终序列为

  3)gap=gap/2=2

    3.1)i=gap=2,j=i-gap=0,arr[0]=1 < arr[2]=4不交换,j=j-gap=-2,i++,此时序列为:

    3.2)i=3,j=i-gap=1,arr[1]=3 < arr[3]=8,不交换,j=j-gap=-1,i++,此时序列为:

    3.3)同理,i=4时:

    3.4)i=5时:

aaarticlea/png;base64,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" alt="" />

    3.5)i=6时:

    3.6)i=7时:

    3.7)i=8时:

  4)gap=gap/2=1,此时

  1.     for(int gap=len/2; gap>=1; gap=gap/2){ //拆分整个序列,元素间距为gap(也就是增量)
  2. //对子序列进行直接插入排序
  3. for(int i=gap; i<len; i++){
  4. for(int j=i-gap; j>=0&&arr[j]>arr[j+gap]; j=j-gap){
  5. swap(arr,j,j+gap);
  6. }
  7. }

    就是

  1. //对子序列进行直接插入排序
  2. for(int i=1; i<len; i++){
  3. for(int j=i-1; j>=0&&arr[j]>arr[j+1]; j=j-1){
  4. swap(arr,j,j+1);
  5. }
  6. }

    相信大家都发现了,上面代码就是我们的直接插入排序,那么具体的模拟过程我也就不再赘述了,不懂的可以去看排序之直接插入排序

  至此,整个序列就有序了。

难解之处

  通过这段代码的剖析,相信大家有些明白,希尔排序的关键并不是随便的分组后各自排序,而是将相隔某个“增量”的记录组成一个子序列,实现跳跃式的移动,使得排序的效率提高。这里“增量”的选取就非常关键了,本例中是以gap=gap/2的方式选取增量的,可究竟应该选取什么样的 增量才是最好,目前还是一个数学难题,迄今为止还没有人找到一种最好的增量序列。不过大量的研究表明,当增量序列为dlta[k]=2t-k+1-1(0≤k≤t≤⌊log2(n+1)⌋)时,可以获得不错的效率。需要注意的是,增量序列的最后一个增量值必须等于1才行。 

排序之希尔排序(shell sort)的更多相关文章

  1. 排序算法--希尔排序(Shell Sort)_C#程序实现

    排序算法--希尔排序(Shell Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难 ...

  2. 《Algorithm算法》笔记:元素排序(2)——希尔排序

    <Algorithm算法>笔记:元素排序(2)——希尔排序 Algorithm算法笔记元素排序2希尔排序 希尔排序思想 为什么是插入排序 h的确定方法 希尔排序的特点 代码 有关排序的介绍 ...

  3. C数据结构排序算法——希尔排序法用法总结(转http://www.cnblogs.com/skywang12345/p/3597597.html)

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

  4. 插入排序、冒泡排序、选择排序、希尔排序、高速排序、归并排序、堆排序和LST基数排序——C++实现

    首先是算法实现文件Sort.h.代码例如以下: <pre name="code" class="java">/* * 实现了八个经常使用的排序算法: ...

  5. 数据结构和算法(Golang实现)(22)排序算法-希尔排序

    希尔排序 1959 年一个叫Donald L. Shell (March 1, 1924 – November 2, 2015)的美国人在Communications of the ACM 国际计算机 ...

  6. 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]

    关于冒泡排序,选择排序,插入排序,希尔排序[资料收集]  以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...

  7. 使用 js 实现十大排序算法: 希尔排序

    使用 js 实现十大排序算法: 希尔排序 希尔排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  8. Python排序算法——希尔排序(Shell’s Sort)

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10793487.html 一.希尔排序(Shel ...

  9. js 实现排序算法 -- 希尔排序(Shell Sort)

    原文: 十大经典排序算法(动图演示) 希尔排序 1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版.它与插入排序的不同之处在于,它会优先比较距离较远的元素.希尔排序又叫缩 ...

随机推荐

  1. java 求取某一段时间内的每一天、每一月、每一年

    1.求取某一段时间内的每一天 Date date0 = new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-01" ...

  2. 基于Linux的oracle数据库管理 part2( 数据库 准备,安装,创建 )

    主要内容 1. 准备 2. 安装 与 删除 软件 3. 创建数据库 4. 配置 SQL*PLUS 环境 准备 1. 软件包, rpm –qa , rpm –ivh *.rpm 2. 检查磁盘空间 3. ...

  3. 权限控制框架Shiro简单介绍及配置实例

    Shiro是什么 http://shiro.apache.org/ Apache Shiro是一个非常易用的Java安全框架,它能提供验证.授权.加密和Session控制.Shiro非常轻量级,而且A ...

  4. svn备份脚 本

    一直用这套脚本备份,脚本主体虽不是原创,但是从网上得到后因为不能运行也进行了些修改,前两天看到有人问关于SVN备份的问题,今天又把脚本整理了一下,解决了不能循环备份多个配置库的问题.希望对大家有所帮助 ...

  5. [xUnix 开发环境--01] MAMP mac os 10.10 配置经历、要点——01. phpmyadmin连不上

    Mac OS 10.10已经自带了apache2和php(php的路径我至今还没不知道,太懒没去找) 用brew安装mysql, 在官网上下载了phpmyadmin,按官方方式配置完后,登录不上,也不 ...

  6. [Swift系列]001-入门准备

    [引子] 最新的苹果发布会上公布了新的苹果编程语言Swift,并且演示了Xcode 6 Beta的一些新功能. 据苹果公司称,这个新语言开放的API更多,实用起来更方便,总之是值得学习.使用,比C/o ...

  7. Ios中比较两个日期之间的时间差距

    1.比较两个日期之间的时间差距 // 1.日历对象(标识:时区相关的标识) NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIde ...

  8. Android failed creating starting window

    /***************************************************************************** * Android failed crea ...

  9. acdream 1685 多民族王国(DFS,并查集)

    Problem Description 娜娜好不容易才回忆起自己是娜娜而不是什么Alice,也回忆起了自己要继续探索这个世界的目标,便偷偷溜出皇宫.娜娜发现这个王国有很多个民族组成,每个民族都有自己的 ...

  10. python练习程序(c100经典例17)

    题目: 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. def foo(a): l=len(a); letters=0; space=0; digit=0; others=0; f ...