1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组员:马志豪、孙天洋、王明远、刘讯。 基本思想 方法与过程 C++代码实现 练习 目 录 基本思想: 希尔排序属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序。先取一个小于n的整数h1作为第一个增量,把文件的全部记录分成h1个组。所有距离为h1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量h2h1重复上述的分组和排序,直至所取的增量ht=1(htht-l…h2h1),即所有记录放在同一组中进行直接插入排序为止。 基本 思想 方法与过程 子序列分割方法: 1.某个增量h的元素构成一个子序列,分别进行 插入排序。在排序的过程中逐次减小这个增量, 最后当h=1时,进行一次插入排序,排序完成。 2.增量序列一般取h=n/2^k(k=1,2,…/[㏒ 2^n]),其中n为待排序列的长度。 方法与过程 1.先取一个正整数h1n,把所有序号相隔h1的数组元素放一组,组内进行直接插入排序。 07 19 24 13 31 08 82 18 44 63 05 29 h=6 方法和过程 第一子序列: 第三子序列: 第二子序列: 第六子序列: 第四子序列: 第五子序列: 第一次排序结果: 07 82 18 19 24 44 13 63 05 31 08 29 07 18 24 13 05 08 82 19 44 63 31 29 方法与过程 07 18 24 13 05 08 82 19 44 63 31 29 2.然后取h2h1,重复上述分组和排序操作;直至ht=1,即所有记录放进一个组中排序为止。 h=3 第一子序列:07 13 63 82 第二子序列:05 18 19 31 第三子序列:08 24 29 44 第二次排序结果: 07 05 08 13 18 24 63 19 29 82 31 44 07 05 24 13 31 08 82 18 44 63 05 29 h=1 第三次排序: 第三次排序结果: 05 07 08 13 18 19 24 29 31 44 63 82 方法与过程 最终排序结果: 05 07 08 13 18 19 24 29 31 44 63 82 方法与过程 增量序列取法: 没有除1以外的公因子,最后一个增量值必须为1。 T(n) = O(n 1.3) 希尔排序的时间是所取“增量”序列的函数。 时间分析 C++代码实现 template class T // shel.h void shel(T p[ ], int n) { int k,j,i; T t; k = n/2; while (k0) { for (j=k; j=n-1; j++) { t=p[j]; i=j-k; while ((i=0)(p[i]t)) { p[i+k]=p[i]; i=i-k;} p[i+k]=t; } k=k/2; } } C++代码实现: 练习 练习1:对关键字序列(265,301,751,129,937,863,742,694,76,438)进行希尔排序。(增量为5,3,1) 初始态: 265 301 751 129 937 863 742 694 076 438 第一趟:265 301 694 076 438 863 742 751 129 937? 第二趟:76 301 129 265 438 694 742 751 863 937? 第三趟:76 129 265 301 438 694 742 751 863 937 结果 运行结果: 1 2 3 4 5 6 7 8 9 10 11 练习2:(增量为5,3,1) 16 25 12 30 47 11 23 36 9 18 31 练习 第一趟希尔排序,设增量 d =5 11 23 12 9 18 16 25 36 30 47 31 第二趟希尔排序,设增量 d = 3 9 18 12 11 23 16 25 31 30 47 36 第三趟希尔排序,设增量 d = 1 9 11 12 16 18 23 25 30 31 36 47 练习 练习2:

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档