第09章2 查找概要1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第09章2 查找概要1

第九章 查找 9.2 动态查找表 B-树(平衡多路查找树)及其查找 一棵m阶的B-树,或为空树,或为满足下列性质的m叉树: 树中每个结点最多有m棵子树; 若根结点不是叶子结点,则至少有两棵子树; 除根结点之外的非叶子结点至少有┌m/2┐棵子树; 结点的结构如下: (n,A0,K1,A1,K2,…An-1,Kn,An) 其中Ki表示关键字,且KiKi+1;Ai表示孩子结点指针,且Ai-1所指子树中的所有结点的关键字均小于Ki;n为结点中关键字的个数,┌m/2┐-1≤n≤m-1; 所有的叶子结点都出现在同一层上,并且不带信息。 9.2 动态查找表 B-树的插入和删除 向B-树中增加新的记录 新增记录将被插入到叶子结点上; 先通过查找操作,定位待插入的叶子结点,再向叶子结点中插入新记录; 如果插入后结点中的记录个数(关键字个数)超过阶数-1,则进行分裂调整; 9.2 动态查找表 m阶B-树的插入和删除 分裂调整 当插入新记录后的结点中关键字个数超过m-1时: E1:将结点的中间记录抽出,将结点分裂为两个结点; E2:将中间记录加入到其父结点中; E3:如果父结点失衡,继续对父结点作出调整。 合并调整 被删除关键字所在结点中关键字数目不小于┌m/2┐则只需从该结点删去该关键字Ki; 被删除关键字所在结点中关键字数目等于┌m/2┐-1,而与该结点相邻的右兄弟(或左兄弟)结点中关键字数目大于┌m/2┐-1,则需将其兄弟结点中的最小(或最大)的关键字上移至双亲结点中,而将双亲中小于(或大于)且紧靠该上移关键字的关键字下移至被删关键字所在结点中。 被删除关键字结点和其相邻的兄弟结点中的关键字数目均等于┌m/2┐-1.假设该结点有右兄弟,且其右兄弟结点地址由双亲结点中的指针Ai所指,则在删去关键字之后,它所在结点中剩余的关键字和指针,加上双亲结点中的关键字Ki一起,合并到Ai所指兄弟结点中。 B+树 B+树是一种变异的B-树。 有n棵子树的结点中含有n个关键字。 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。 所有的非终端结点可以看成是索引部分,结点中仅含有其子树中的最大(或最小)关键字。 散列函数的常用构造方法 选择法 叠加法 折叠法 模除法 数乘法 平方取中法 基数转换法 伪随机法 散列表上的查找 E1:计算H(key),获得存储地址; E2: E21:如果冲突,按照冲突解决策略,计算下一个地址; E22:循环直到元素为空或等于key E3:若元素为空,则查找失败,否则查找成功。 散列表上的插入 E1:计算H(key),获得存储地址; E2: E21:如果冲突,按照冲突解决策略,计算下一个地址; E22:循环直到元素为空 E3:写入新元素 * * 9.1 静态查找表 9.2 动态查找表 9.3 哈希表 以下是一个3阶B-树,除根结点外,每个结点中的子树个数不少于2,不多于3,即每个结点中最多含有2个关键字,最少含有1个关键字。 24 15 47 21 17 9 28 38 33 55 49 65 30 89 76 98 92 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ B-树及其查找 在B-树上查找关键字K 从根结点出发,先在结点上查找K,则若找到,则查找成功;如果KiKKi+1,沿Ai 子树继续查找;如果KK1,沿A0子树继续查找;如果KKn,沿An子树继续查找。 若在叶子结点中查找失败,则查找失败。 9.2 动态查找表 例:在一棵5阶B-树上,插入新结点后的分裂调整。 9.2 动态查找表 设输入序列: 45, 32, 16, 77, 94, 38, 44, 21, 39, 68, 33, 26构造3阶B-树 B-树的插入和删除 从B-树中删除记录 先通过查找操作,定位待删除的记录; 从记录所在结点上删除该记录; 若被删除记录的结点为最下层的非叶子结点,且结点中的记录数不少于┌阶数/2┐,则删除完成,否则须进行合并调整; 9.2 动态查找表 9.2 动态查找表 从非叶子结点上删除一条记录,可转嫁到对叶子结点中的记录的上移。 下面是一个从5阶B-树上删除一个记录的例子: 当被删除记录的结点中的记录数低于下限, 如果兄弟结点中有富余的记录,则向其兄弟结点借记录。 下面是从一个5阶B-树中删除一条记录的例子。 当被删除记录的结点中的记录数低于下限,且其兄弟结点中没有富余的记录,则与其兄弟合并。 下面是从一个5阶B-树中删除一条记录的例子。 45 24 53 90 3 12 37 50 61 70 100 45 24 53 90 3 37 50 61 70 100 45 24 61 90 3 37 53 70 10

文档评论(0)

676200 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档