- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于希尔排序算法的讨论
维普资讯
,
一 々。
( /第17卷 第1期 青海大学学报(自然科学版) V0I.17 No.1
1999年 2月 JatmalofQinghaiUniversity F曲 .1999
关于希尔排序算法 的讨论
苏晓萍 ,]- 0/
(青海师范大学计算机 系 西宁 81000~)
摘要 文 中针时增量序列以及扫描次数时希尔排序程序执行效率的影响进行讨论 ,
给 出实现希书排序的程序 ,并时不同输入数据在不同的增量序列下,希托排序 的运行
效率进行 了比较,得 出~-Te:当增量序列为 h。=(3 一1)t2,… ,4o,13,4,1时,程序效
率较希 尔最初建议使用的 hd=Nt2,N/4,…,1好 。
关键词 希尔排序 程序效率 增量序列 扫描次数
随着计算机软件技术 的不断发展 ,windows95,windowsNT等界面友好 的系统应运而生 ,使得
v,iondows下的编程变得流行。但是,算法依然显得重要 ,近几年^们对 《数据结构 卜 计算机
科学基础科 目的研究从未停止。排序作为 《数据结构》中的重要内容,它的算法优劣对程序效
率有重要影响,希尔排 序算法是一种 以极小 内存来实现速度 比较快的排序的方法 ,它的排序速
度仅次于著名 的归井排序法 ,而且不需要附加和数据本身长度相等 的内存空间,能实现就地排
序 ,这使得希尔排序在数据 比较多时更有使用价值 。本文针对希尔排序 中未解决 的问题加 以
讨论 。
1 希尔算法的原理
就地排序记录 Rl, ,…, ;在完成排序之后 ,其键值将是有序的 :Kt= =K|…
=K 。用一个辅助增量序列 }Il,}Il一 一,h。来控制这个排序过程 ,其 中h=1一定成立 ;适当选
择增量序列可 以显著减少排序时间,t值则反映了程序扫描次数。
① [对 s进行循环] 对于s=t,t一1,…,l实施步骤② ,然后终止这个算法。
② [对 j进行循环] 置 h一一h,并对 hj=N实施步骤③到⑥。(使用直接插入法
对隔开 h个位置的元素进行排序 ,使得对于 1:i=N—h,K =K+ )
③ [给 i,K,R赋值] 置 i一一j—h,K一一 ,R一一
④ [比较 K,K] 如果 KK,则转移到⑥。
⑤ [移动 R,i减值] 置 R+h一一R,然后 i一一i—h。如果 iO,则转回④。
⑥ [R进入 R+h] 置 R一一R+h。
2 希尔算法 的分析
希尔排序属于插入排序类方法。插入排序类算法要求排序的数据基本有序时的效率达到
收稿 日期:l9%一12—18
维普资讯
第 1期 苏晓萍:关于希尔排序算法 的讨论 37
时间复杂度为 0(n),比其他算法 的效率高 ,因此 ,只研究输人数据为随机数时的情况。
希尔在发现这种排序算法时,建议使用 的增量序列 :N/2,N/4,Nt8,…,1(N为输人数据 的
总数 ),原因是易于简单程序实现。但是 ,该序列不能充分体现希尔算法的优点 。当 N值很大
时 ,增量序列非常长 ,步骤①的循环次数多,影响了程序的效率 ,因此我们在对该算法进行分析
的基础上 ,寻找一更好的增量序列 ,提高程序效率。在希 尔排序算法 中,有四个 因素决定执行
时间:输人数据 的总数 N,扫描次数 t,移动次数 B,以及增量序列 }Il,Ill一…,h,现在讨论 :当N
很大时,怎样选取扫描次数 t,移动次数 B以提高程序效率。
定理 1 如果增量序列 h—h 一,h】满足条件:IIl+lmodh,=o(t8=1)成立 ,并且 N
很大时 ,程序运行时间不能 比O(N )更小。例如选取增量序列为 8,4,2,1进行希
文档评论(0)