当前课程知识点:数据结构(下) > 第八章 高级搜索树(上) > (b3)B-树:查找 > 08B3-2 操作实例
来看这样一个具体的实例
首先确认这是一棵5阶的B树 也就是所谓的(3,5)树
因此 其中每个节点至多拥有5个分支
而除根节点之外 其他的节点也至少应该拥有3个分支
就关键码而言 每个节点至多拥有4个
而除根节点之外 每个节点也至少应该拥有2个
现在我们假设需要查找75
于是我们首先对常驻于内存的根节点进行一次顺序查找
并且顺利的在这个位置命中
接下来再考察一个略微复杂一些的情况
也就是我们来试图查找69
为此我们同样首先需要对常驻于内存的根节点进行一次顺序查找
这次查找以失败终止于介乎53和75之间的这个引用
于是我们顺藤摸瓜 沿着这个引用将下层的这个节点读入内存
并且在其中进行一次顺序查找
不出意料 最终可以成功的找到这个关键码
再来看一个更为复杂的情况
我们不妨来试图查找关键码49
同样的 我们的查找依然起始于常驻于内存的根节点
经过在根节点的一趟顺序查找 虽然以失败告终
但是却可以确定一个引用
这个位于53左侧的引用指向下层的另一个节点
因此我们需要经过IO操作将这个节点载入内存
并且依然在其中针对49做一趟顺序查找
不出意料尽管这趟查找依然失败 但是它却会给出一个引用
顺着这个引用 我们又可以深入到B树的下一层
并且将对应的那个节点经过IO载入内存
接下来我们依然需要在这个新的节点中针对目标49做一趟顺序查找
不出意料 查找将会成功的终止于49
作为失败查找的一个实例 我们不妨来考察针对于45的一次查找
经过简单的目测 不难确定
查找应该失败于这里的41和49两个关键码之间
就整个查找所涉及的节点而言 针对于45的查找
与刚才针对于49的查找实际上是一样的
也就是说 我们首先要对根节点进行查找 然后再转向这个节点
接下来再进而转向这个节点
并且在这个节点中 经一趟顺序查找 最终失败于41和49之间
请注意 这里的查找失败 是以介乎41和49之间的那个外部节点来指示
尽管在这种紧凑的画法中这些指向外部节点的引用并不能看见
但它们的确存在 而且是十分重要的
由此我们也可以得出一个推论 对于B树的失败查找
必然都失败于最底层叶节点所下属的某个外部节点处
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)概述
--07A-1 纵览
--07A-5 接口
-(a)概述--作业
-(b1)BST:查找
-第七章 二叉搜索树--(b1)BST:查找
-(b2)BST:插入
-(b2)BST:插入--作业
-(b3)BST:删除
-第七章 二叉搜索树--(b3)BST:删除
-(c)平衡与等价
-(c)平衡与等价--作业
-(d1)AVL树:重平衡
-第七章 二叉搜索树--(d1)AVL树:重平衡
-(d2)AVL树:插入
-(d2)AVL树:插入--作业
-(d3)AVL树:删除
-(d3)AVL树:删除--作业
-(d4)AVL树:(3+4)-重构
-(d4)AVL树:(3+4)-重构--作业
-本章测验
--章节测验
-(a1)伸展树:逐层伸展
--习题
-(a2)伸展树:双层伸展
--习题
-(a3)伸展树:算法实现
--习题
-(b1)B-树:动机
--习题
-(b2)B-树:结构
--习题
-(b3)B-树:查找
--习题
-(b4)B-树: 插入
--习题
-(b5)B-树: 删除
--习题
-(xa1)红黑树:动机
--习题
-(xa2)红黑树:结构
--习题
-(xa3)红黑树:插入
--习题
-(xa4)红黑树:删除
-本章测验
--习题
-(b)散列:原理
--09B-3 数组
--09B-4 原理
--09B-5 散列
--09B-6 冲突
--习题
-(c)散列:散列函数
--习题
-(d1)散列:排解冲突(1)
--习题
-(d2)散列:排解冲突(2)
--习题
-(e)桶/计数排序
--习题
-本章测验
--本章测试
-(a1)需求与动机
--习题
-(a2)基本实现
--习题
-(b1)完全二叉堆:结构
--习题
-(b2)完全二叉堆:插入与上滤
--习题
-(b3)完全二叉堆:删除与下滤
--习题
-(b4)完全二叉堆:批量建堆
--习题
-(c)堆排序
--习题
-(xa1)左式堆:结构
--习题
-(xa2)左式堆:合并
--习题
-(xa3)左式堆:插入与删除
-本章测验
--本章测试
-(a)ADT
--习题
-(b1)串匹配
--习题
-(b2)蛮力匹配
--习题
-(c1)KMP算法:从记忆力到预知力
--习题
-(c2)KMP算法:查询表
--习题
-(c3)KMP算法:理解next[]表
--习题
-(c4)KMP算法:构造next[]表
--习题
-(c5)KMP算法:分摊分析
--习题
-(c6)KMP算法:再改进
-(d1)BM_BC算法:以终为始
-(d2)BM_BC算法:坏字符
-(d3)BM_BC算法:构造bc[]
-(d4)BM_BC算法:性能分析
-(e1)BM_GS算法:好后缀
-(e2)BM_GS算法:构造gs表
-(e3)BM_GS算法:综合性能
-(f1)Karp-Rabin算法:串即是数
-(f2)Karp-Rabin算法:散列
-本章测验
--本章测试
-(a1)快速排序:算法A
-- 12a1-5: 实例
--习题
-(a2)快速排序:性能分析
--习题
-(a4)快速排序:变种
-(b1)选取:众数
-(b3)选取:通用算法
--习题
-(c1) 希尔排序:Shell序列
--习题
-(c2)希尔排序:逆序对
-本章测验
--本章测试