版权声明:本文为博主原创文章,未经博主允许不得转载。

  希尔排序,是一个缩小增量排序。它根据步长来进行排序,步长不同可能会产生不同的序列,但是他们的最终结果是相同的,希尔排序的官方理论难以理解,这里就用非官方的解释来阐述。

  原理:

    >1.加入有n个节点的序列,假设希尔排序的步长i,那么我们第一步就是将这n个节点,每隔i个座位为一组,如下所示(步长i要取好):

      [n1, n1+i]

      [n2, ni+2]

      [...........]

      [nx, nn]

    >2.然后每一组两两比较,如n1和n1+i比较,选择合适(合适是指排序的升降关系)的数据排在前面。假如n1+i < n1,且按升序排,那么第一组排序后的序列为[n1+i, n1],其他的依次类推,组成排好序的x组。假设如下是排好的序列。

      [n1+i, n1]

      [n2, ni+2]

      [n3, ni+3]

      [ni+4, n4]

      [...........]

      [nx, nn]

    >3.最后将按纵向的序列,将所有的节点依次写好,这就是希尔排序的第一趟的结果了,根据>2.来的结果是:n1+i, n2, n3, ni+4, ...., nx, n1, ni+2, ni+3, n4, ...., nn

    >4.然后将步长i减去1,重复上面的操作,直到i=0,结束。

示例:以(5,6,1,8,4,9)序列为例,演示第一趟排序的结果

最新文章

  1. js Date学习
  2. html初学者笔记01
  3. HDU 1007Quoit Design(最近点问题)
  4. 整合Open vSwitch与DNSmasq为虚拟机提供DHCP功能
  5. 关于百度 UEditor的使用
  6. Oracle SQL in 超过1000 的解决方案
  7. (转)log4j(五)——如何控制不同目的地的日志输出?
  8. JSP入门 文件上传
  9. [模拟赛] T1 高级打字机
  10. Spring - AOP简介与图示
  11. 华为QUIDWAY系列交换机的console重置
  12. CentOS(6.8)7 安装 Mysql 5.7
  13. 使用docker-compose运行Django
  14. 【Revit API】创建相机视角
  15. Any way to start Google Chrome in headless mode?
  16. (DP)To The Max --HDU -- 1081
  17. RabbitMq初探——消息确认
  18. git简易入门(github)
  19. 448D - Codeforces
  20. 【原创】无线破解Aircrack-ng套件详解(一)--airmon-ng与airodump-ng

热门文章

  1. Tarjan&amp;2-SAT 总结
  2. Cannot modify header information - headers already sent by出错的原因
  3. php中__call与__callstatic()使用
  4. spring boot 不连接数据库启动
  5. Codeforces Round #392 (Div. 2) - B
  6. Codecraft-17 and Codeforces Round #391 - A
  7. .net core 控制台程序生成EXE
  8. 牛客网NOIP赛前集训营-提高组(第六场)A-最长路
  9. 第三节 基本数据写入 --------增加&amp;查询
  10. python 文件单行循环读取的坑(一个程序中,文件默认只能按行循环读取一次,即使写到另一个循环里,它也只读取一次)