算法与数据结构(9-11章).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 集合 一、基础知识题 9.1 若对长度均为n的有序的顺序表和无序的顺序表分别进行顺序查找,试在下列三种情况下分别讨论二者在等概率情况下平均查找长度是否相同? (1)查找不成功,即表中没有和关键字K相等的记录; (2)查找成功,且表中只有一个和关键字K相等的记录; (3)查找成功,且表中有多个和关键字K相等的记录,要求计算有多少个和关键字K相等的记录。 【解答】 (1)平均查找长度不相同。前者在n+1个位置均可能失败,后者失败时的查找长度都是n+1。 (2)平均查找长度相同。在n个位置上均可能成功。 (3)平均查找长度不相同。前者在某个位置上(1=i=n)查找成功时,和关键字K相等的记录是连续的,而后者要查找完顺序表的全部记录。 9.2 在查找和排序算法中,监视哨的作用是什么? 【解答】监视哨的作用是免去查找过程中每次都要检测整个表是否查找完毕,提高了查找效率。 9.3 用分块查找法,有2000项的表分成多少块最理想?每块的理想长度是多少?若每块长度为25 ,平均查找长度是多少? 【解答】分成45块,每块的理想长度为45(最后一块长20)。若每块长25,则平均查找长度为ASL=(80+1)/2+(25+1)/2=53.5(顺序查找确定块),或ASL=19(折半查找确定块)。 9.4 用不同的输入顺序输入n个关键字,可能构造出的二叉排序树具有多少种不同形态? 【解答】 9.5 ?证明若二叉排序树中的一个结点存在两个孩子,则它的中序后继结点没有左孩子,中序前驱结点没有右孩子。 【证明】根据中序遍历的定义,该结点的中序后继是其右子树上按中序遍历的第一个结点,即右子树上值最小的结点:叶子结点或仅有右子树的结点,没有左孩子;而其中序前驱是其左子树上按中序遍历的最后个结点,即左子树上值最大的结点:叶子结点或仅有左子树的结点,没有右孩子。命题得证。 9.6??对于一个高度为h的AVL树,其最少结点数是多少?反之,对于一个有n个结点的AVL树, 其最大高度是多少? 最小高度是多少? 【解答】设以Nh表示深度为h的AVL树中含有的最少结点数。显然,N0=0,N1 =1,N2 =2,且Nh = Nh-1 + Nh-2 +1(h≥2)。这个关系与斐波那契序列类似,用归纳法可以证明:当h≥0时,Nh = Fh+2 -1,而Fh约等于Фh/。其中Ф=(1+)/2,则Nh约等于Фh+2/(-1) (即深度为h的AVL树具有的最少结点数)。 有n个结点的平衡二叉树的最大高度是logФ((n+1))-2,最小高度是(log2n(。 9.7??试推导含有12个结点的平衡二叉树的最大深度,并画出一棵这样的树。 【解答】根据9.6的结论可知,深度为n的AVL树中的最少结点数为 所以12=,有=13,求得n+2=7(Fibonacci数列第一项的值假设为1,对应于二叉树表 示有一个结点的二叉树的深度为1),所以n=5。 可表示为如下图所示的AVL树: ? ? ? ? ? 9.8??假定有n个关键字,它们具有相同的哈希函数值,用线性探测方法把这n个关键字存入到哈希表中要做多少次探测? 【解答】n个关键字都是同义词,因此用线性探测法第一个关键字存入时不会发生冲突,所以探测的次数应为次。 9.9??建立一棵具有13个结点的判定树,并求其成功和不成功的平均查找长度值各为多少。 【解答】 查找成功时的平均查找长度为: 查找不成功时的平均查找长度为: 9.10 ?二叉排序树中关键字互不相同,则其中关键字最小值结点无左孩子,关键字最大值结点无右孩子,此命题是否正确?最小值结点和最大值结点一定是叶子吗?一个新结点总是插在二叉排序树的某叶子上吗? 【解答】 (1)此命题正确。 (2)最小值结点和最大值结点不一定是叶子结点。 (3)一个新结点不一定总是插在二叉排序树的某叶子上。 9.11 ?回答问题并填空: (1)散列表存储的基本思想是什么? (2)散列表存储中解决碰撞的基本方法有哪些?其基本思想是什么? (3)用线性探查法解决碰撞时,如何处理被删除的结点?为什么? 【解答】 (1)散列表存储的基本思想是用关键字的值决定数据元素的存储地址 (2)散列表存储中解决碰撞的基本方法: ① 开放定址法 形成地址序列的公式是:Hi=(H(key)+di)% m,其中m是表长,di是增量。根据di取法不同,又分为三种: a.di =1,2,…,m-1 称为线性探测再散列,其特点是逐个探测表空间,只要散列表中有空闲空间,就可解决碰撞,缺点是容易造成“聚集”,即不是同义词的关键字争夺同一散列地址。 b.di =12,-12,22,-22,… ,(k2(k≤m/2) 称为二次探测再散列,它减少了聚集,但不容易探测到全部表空间,只有当表长为形如4j+3(j为整数)的素

文档评论(0)

白领文档(原创) + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档