Access希尔排序算法-欧志华
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


Access希尔排序算法

发表时间:2022/11/2 8:06:19 评论(0) 浏览(1285)  评论 | 加入收藏 | 复制
   
摘 要:希尔排序算法。
正 文:
      希尔排序(ShellSort)也称“缩小增量排序”,是将整个无序列分割成若干小的子序列分别进行直接插入排序,待整个序列中的元素基本有序时,再对全体元素进行一次直接插入排序,这样大大减少了元素移动的次数提高了排序效率。
      希尔排序的过程是: 假定待排序列的数组为R[0…n-1],先取一个正整数h1(h1  间隔序列的求得: 间隔序列就是在希尔排序中使用的增量的序列。例如,在含有100个数据项的数组中,可能先以40为增量,然后以13为增量,以4为增量,最后以1为增量进行希尔排序。其中[40,13,4,11就是一个间隔序列。

下面介绍两种间隔序列的求得方法:

方法一:

在希尔排序算法中,可以利用公式h=3*h+1 生成序列1,4,13,40等。当间隔数大于数组长度时停止这个过程。例如,对于数组长度为 100 的序列,序系列的第5个数121就超过了数组的长度。因此,使用增量为40作为最大数字来开始这个排序过程,然后每完成一趟排序,用前面提供的公式的倒推式减小间隔: h=(h-1)/3,即按照增量序列为40,13,4,1为增量对序列进行希尔排序。

方法二:

在希尔排序算法中,也可以利用公式n/2 来求得间隔序列。例如,对于数组长度为 100 的序列, 

用此公式求得的序列为50,25,12,6,3,1。这个方法的好处是不需要在排序开始之前去找初始的间隔。


附   件:

点击下载此附件


图   示:

点击图片查看大图


Access软件网交流QQ群(群号:198465573)
 
 相关文章
【Access源码】分组自动编号\筛选数据后自动分组编号的示例\分...  【麥田  2011/7/26】
将筛选的所有数据按照指定顺序排序  【杨雪  2020/6/13】
对结果集进行排序  【杨雪  2021/3/21】
Access快速开发平台--模糊查询数据排序倒序的方法  【欧志华  2021/10/27】
Access冒泡排序示例  【欧志华  2022/10/28】
Access快速排序算法  【欧志华  2022/10/31】
Access选择排序算法  【欧志华  2022/11/1】
常见问答
技术分类
相关资源
文章搜索
关于作者

欧志华

文章分类

文章存档

友情链接