- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.3.4 B+树 (4)有n棵子树的结点则有n个关键字,每个结点至少包含下列数据域: 其中:n为关键字数,除根结点外,其它所有结点的关键字个数n满足: (n,P1,Kl,P2,K2,…,Pn,Kn) ?m/2?? n ? m;Ki(1?i?n)为关键字,且关键字序列递增有序:K1 K2…Kn;Pi(1?i?n)为指向子树根结点的指针,在每个内部结点中,假设用Max_Keys(Pi)来表示子树Pi中的最大的关键字,则有:Max_Keys(P1)?K1Max_Keys(P2)?K2…Max_Keys(Pn) ?Kn,即每个内部结点中的关键字Ki,为其相应指针Pi所指子树中关键字的最大值。 7.3.4 B+树 (5)所有的叶结点包含全部(数据文件中记录)关键字及指向相应记录的指针,而且叶结点本身按关键字由小到大顺序链接。因此,叶结点除了包含普通结点的数据(n,P1,Kl,P2,K2,…,Pn,Kn)外,还增加一个指针域,用来指向下一个叶结点。可以把每个叶结点看成一个基本索引块,它的指针不再指向另一级索引块,而是指向数据文件中的记录。且所有叶结点都出现在同一层上。 由定义可知,一棵m阶B+树和m阶B-树的不同点主要体现在以下几个方面: 7.3.4 B+树 (1)有n个子树的结点中含有n个关键字; (2)所有的叶结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶结点本身按关键字的大小顺序链接; (3)所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。 如图7-19所示为一棵4阶的B+树,深度为3,所有叶结点均在第三层上。B+树上有两个头指针,一个指向根结点,另一个指向关键字最小的叶结点,并且所有的叶结点链成一个有序链表。 7.3.4 B+树 图7-19 一棵4阶B+树 7.3.4 B+树 2.B+树的查找 在B+树中可以采用两种查找方式:一种是直接从最小关键字(*rp)开始,进行顺序查找;另一种是从根结点(*t)开始,进行随机查找。 第二种方式与B-树的查找方法相似,只是在非终端结点中的关键字与查找值相等时,查找并不结束,而是继续向下直至叶结点。若查找成功,则按相应指针取出对应记录即可。因此,在B+树中进行随机查找时,不过成功与否,每次查找都是经过了一条从根结点到叶结点的路径。 7.3.4 B+树 3.B+树的插入 B+树的插入与B-树的插入过程类似。不同的是B+树的插入是在叶结点上进行的,当插入后结点的关键字个数大于m时,就必须分裂成两个结点,它们所含关键字个数分别为:?(m+1)/2?和?(m+1)/2?,分裂后的两个叶结点仍然按序链接。同时要使得它们的双亲结点中包含这两个结点中的最大关键字和指向它们的指针。若因此导致双亲结点的关键字个数大于m,则应继续分裂,直至根结点为止。特殊的是,当插入的关键字比最大关键字都大,需要更新插入关键字所在结点的祖先结点中相应的关键字。 7.3.4 B+树 4.B+树中关键字的删除 B+树的删除与B-树的删除过程类似。不同的是B+树的删除是从叶结点开始的,当删除的不是叶结点中最大的关键字,则直接删除;当删除的是叶结点中最大的关键字时,其在非终端结点中的值可以作为“分界关键字”存在。若因删除操作而使结点中关键字个数小于?m/2?时,则从其兄弟结点中调剂关键字或和兄弟结点合并(和B-树类似)。 较之于B-树,B+树的非终端结点通常可以容纳更多的条目,所以B+树比相应B-树的层数更少,或者能容纳更多的条目。不同于B-树只适合随机查找,B+树同时支持随机查找和顺序查找,更适合文件索引系统。 第7章 查找 7.4 散列(Hash)表的查找 以上讨论的查找方法,由于数据元素的存储位置与关键字之间不存在确定的关系,均是基于比较运算来实现的。查找效率由比较一次缩小的查找范围决定。理想的情况是不经过任何比较,依据关键字直接得到其对应的数据元素位置,即要求关键字与数据元素之间是一一对应的关系,通过关键字可以很快地找到对应数据元素的位置。这就是本节要介绍的散列表查找。 7.4 散列(Hash)表的查找 7.4.1 散列表的基本概念 使用函数H计算关键字的地址,从而把关键字映射到对应的存储位置上,查找时,同样由函数H对给定值key进行映射,将key与计算出的存储位置上的元素关键字进行比较,确定查找是否成功,这就是散列法或Hash(哈希)法。此时,称函数H为散列函数,关键字key的映射值H(key)为散列地址,按照散列法构造的查找表称为散列表。 7.4 散列(Hash)表的查找 7.4.2 散列函数构造方法 构造散列函数的方法很多。上述中讨论过,作为一个好的散列函数,应当均匀、简单,即应具有较好的随机性,使一组关键字的散列地址均匀地分布在整个
文档评论(0)