码迷,mamicode.com
首页 > 编程语言 > 详细

希尔排序(shell)理论---不含源码

时间:2016-09-20 23:46:09      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

  原理:

    >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)序列为例,演示第一趟排序的结果

           技术分享

 

希尔排序(shell)理论---不含源码

标签:

原文地址:http://www.cnblogs.com/geore/p/5890737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!