数据结构复习8-10.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构复习8-10

* 问题16. 给定一个序列 {43, 71, 86, 13, 38, 60, 27},给出堆排序前三趟的结果。 解析: 堆排序 13 71 86 43 38 60 27 43 71 86 13 38 60 27 43 71 86 13 38 60 27 43 71 86 13 38 60 27 初始堆 86,71,60,13,38,43,27 第一趟 71,38,60,13,27,43,86 第二趟 60,38,43,13,27,71,86 第三趟 43,38,27,13,60,71,86 * 问题17. 设待排序元素个数为n,分析堆排序的时间代价和空间代价。 解析:设 n = 2h-1, 堆的形成过程中第 i 层有 2i-1 个结点,最坏情况一直滑落到底,比较 h-i 层,每层横向 1 次纵向 1 次比较,总关键字比较次数: 在形成初始堆后,需要做n-1次交换和重新调整堆,需要做的比较次数如下表所示。 总关键字比较次数与数据移动次数为O(nlog2n), 附加存储:1 * 总比较次数的计算如下 目标层次 比较两次的结点 比较次数 最后比较一次结点的比较次数 h-1 2h-1-2 2*(2h-1-2)*(h-1) 2*(h-2)+1 h-2 2h-2-1 2*(2h-2-1)*(h-2) 2*(h-3)+1 h-3 2h-3-1 2*(2h-3-1)*(h-3) 2*(h-4)+1 … …… …… …… 3 22-1 2*(22-1)*2 2*1+1 2 21-1 2*(21-1)*1 2*0+1 1 0 0 0 * 总比较次数 {2*(2h-1-2)*(h-1)+2*(h-2)+1}+ +{2*(2h-2-1)*(h-2)+ 2*(h-3)+1}+ +{2*(2h-3-1)*(h-3)+2*(h-4)+1}+……+ +{2*(22-1)*2+2*1+1}+{2*(21-1)*1+2*0+1} = = 2*{ h*2h-1-2(h-1)-2h-1+(h-2)+(h-1)*2h-2-(h-2) -2h-2+(h-3)+(h-2)*2h-3-(h-3)-2h-3+(h-4)+ +……+ 3*22-2-22+1+2*21-1-21+20-20}+ +1+1+1+…+1 = = 2*{{h*2h-1+(h-1)*2h-2+(h-2)*2h-3+…+3*22+ +2*21+ 1*20}-{2h-1+2h-2+2h-3+…+22+21+20}- -2(h-1)}+(h-2) * = 2*{(h-1)*2h+1-(2h-1)-2(h-1)}+(h-2) = (h-2)*2h+1-3*(h-2) = (h-2)*(2*(2h-1)-1) = = (2*n-1)*(log2(n+1)-2) = O(nlog2n). 13 71 86 43 38 60 27 43 71 86 13 38 60 27 43 71 86 13 38 60 27 43 71 86 13 38 60 27 初始堆 i = 6, c = 4 i = 5, c = 2 i = 4, c = 2 43 71 86 13 38 60 27 43 71 86 13 38 60 27 i = 3, c = 2 i = 2, c = 1 * 问题18. 给定一个序列 {43, 71, 86, 13, 38, 60, 27, 55},给出二路归并排序前三趟的结果。 解析: len=1 [43],[71],[86],[13],[38],[60],[27],[55] len=2 [43,71], [13,86], [38,60], [27,55] 比较4*1 len=4 [13,43,71,86], [27,38,55,60] 比较2*3 [13,27,38,43,55,60,71,86] 比较1*7 问题19. 设待排序元素个数为n,分析二路归并排序的时间代价和空间代价。 解析:设关键字个数为 n = 2s,s 是正整数。则二路 二路归并排序 * 趟数 归并项长度 len 每趟二路归并次数 每次比较次数 2len-1 每趟总比较次数 1 20 = 1 2s-1 2*20-1 = 21-1 2s-2s-1 2 21 = 2 2s-2 2*21-1 = 22-1 2s-2s-2 …… …… ……. …… s 2s-1 20 =1 2*2s-1-1 = 2s-1 2s-20 归并趟数为 ?log2n? = ?log22s? = s。 总的关键字比较次数为 s*2s – (

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档