参考第9章查找part.pptx

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 查找主讲:戚玉涛第九章 查找9.1 查找的基本概念9.2 静态查找表——基于线性表的查找法 9.3 动态查找表——基于树表的查找法 9.4 哈希表——计算式查找法动态查找表用树型结构存储表二叉排序树平衡二叉排序树B树 B- 树 B+ 树B-树B-树的定义:B-树又称为多路平衡查找树,是一种组织和维护外存文件系统非常有效的数据结构。一棵m阶B-树或者是一棵空树,或者是满足下列要求的m叉树:(1)树中每个结点至多有m棵子树;(2)若根结点不是叶子结点,则根结点至少有两棵子树;(3)除根结点之外的所有非终端结点至少有?m/2?棵子树;(4)所有的非终端结点中包含下列信息数据 ( n, A0, K1, A1, K2, A2, …, Kn, An )n:关键字个数。除根结点外,其它结点的n( ?m/2?-1≤n≤m-1);Ki:关键字,满足ki<ki+1(递增有序);Ai:指向子树根结点的指针,指针Ai-1所指子树中所有结点关键字均小于等于Ki,An所指子树中所有结点的关键字均大于Kn。(5) 所有叶子结点都在同一层上,并且不带信息(可看作外部结点或查找失败的结点)。ta3111211143993911352747187853bcdefgh64FFFFFFFFFFFFB-树中每个结点中的关键字从小到大排列叶结点不包含关键字可看成外部结点,指向其指针为空叶结点总数=树中关键字总数+1例:4阶B-树,深度为4B-树的操作查找操作插入操作删除操作B-树的查找B-树的查找过程:1.把根结点取来,在根结点所包含的关键字K1,…,Kn中查找给定的关键字(关键字个数不多时,可用顺序查找;个数较多时,可用二分查找)2.若找到等于给定值的关键字,则查找成功。否则,一定可以确定要查找的关键字是在某个Ki和Ki+1之间(因为在结点内部的关键字是排序的)3.于是,取Ai所指向的结点继续查找。4.重复(2)(3),直到找到,或指针Ai为空时,查找失败。 ta1111211399274339351811475378bcdefgh64FFFFFFFFFFFF查找操作:4阶B-树,深度为4查找key=23查找key=47B-树的查找B-树的查找的两种访问情况:①在树中找结点(在磁盘上进行的,内外存交换)②在结点中找关键字(在内存中进行的)B-树的查找过程是一个顺指针查找结点和在结点的关键字中进行查找交替进行的过程。因此B-树的查找时间与B-树的阶数m和B-树的高度h直接有关,必须加以权衡。在B-树上进行查找,查找成功所需的时间取决于关键字所在的层次,查找不成功所需的时间取决于树的高度。需要了解树的高度h 与树中的关键字个数 N 之间的关系。B-树查找分析在磁盘上查找的次数,即待查关键字所在结点在B-树上的层次数,是决定B-树查找效率的首要因素。含N个关键字的m阶B-树的最大深度是多少?若一棵L+1层的m阶B-树包含N个关键字,查找失败的关键字会有N+1种情况,而B-树叶结点表示树中并不存在的外部结点,正好对应N+1种查找失败的情况。因此,B-树有N+1个叶节点,叶节点都在第L+1层。第一层为根,至少一个结点,根至少有两个孩子,即第二层至少有两个结点。B-树查找分析除根和树叶外,其他结点至少有?m/2?个孩子。因此,第三层至少有2× ?m/2?个结点,第四层至少有2×(?m/2?)2个结点……第L+1层至少有2×(?m/2?)L-1个结点,于是有:在含有N个关键字的B-树上进行查找时,从根结点到关键字所在结点的路径上,涉及的结点数不超过L层次数。即: N+1≥2×( ?m/2? )L-1 B-树查找分析若B-树的阶数 m = 199,关键字总数 N = 1999999,则B-树的高度 h 不超过log100 1000000 +1= 4这意味着若N = 1999999 ,m=199,则L至多等于4。也就是说,一次查找最多进行L次访问外部存储器的存取操作。因此,B-树的查找效率是相当高的,是一种组织和维护外存文件系统非常有效的数据结构。 B-树的插入对于叶结点处于第L+1层的B-树,插入的关键字总是进入第L层的非叶子结点。每次插入一关键字是在最低层(L层)某结点添加一关键字若该结点的关键字个数不超过m-1,则插入完成,否则结点分裂。B-树的插入结点分裂的方法: 令 s = ?m/2?,在原结点中保留 (A0,K1,…… , Ks-1,As-1); 建新结点 (As,Ks+1,…… ,Kn,An); 将(Ks,p)插入双亲结点若双亲为空,则建新的根结点。例如:下图的3阶B-树,深度为4btbtaa4545bbee242453 9053 90ggccddffhh3 123 1237 7061 70

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档