王道--数据结构第七章 查找




注意:每个数据元素的关键字都是唯一不重复的

注意:查找表并不是一种特定的数据结构,他只是对于要执行数据查询工作的数据结构的统称,所以查找表并不是一种新的数据结构。









在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ASL是平均查找长度 ,可分为查找成功的ASL和查找失败的ASL。

我们用ASL成功和ASL失败来评价查找的效率。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:这节课里面除了课后思考,剩下的所有授课过程中的mid 都是相除后向下取整
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

折半查找判定树的构造

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
👇下面的mid的结果是相除后向上取整
在这里插入图片描述
在这里插入图片描述

👆上面的树高直接反映了折半查找的时间复杂度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关于mid是向上取整还是向下取整,对于我们绘制出的折半查找的判断树也会有所不同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用分块查找相比于顺序查找提升了一定的性能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


LL & RR

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


LR

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


RL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


汇总

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


练习:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例一、例二、例三这种可能会出现;例四有点复杂,408可能不会考,能掌握更好;例五、六,如果有题目出现争议(多种做法)的话不太可能会考。

在这里插入图片描述
2022年之前都没有考过删除平衡二叉树的题目。
但是至少要掌握例一到例四的课件中的例子。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

染色是说参与旋转的结点都需要染色(如父换爷操作后的染色,是说给父节点和爷结点染上相反的颜色)

非根节点的插入只需要关注是否违背不红红的特性

如果新插入结点不是根节点的话,就判断新结点是否满足红黑树定义(口诀),主要是判断满不满足"不红红",如果不满足"不红红"的话就继续按照看叔结点的红色或者黑色继续处理。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

插入结点23

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

插入节点24

在这里插入图片描述

在这里插入图片描述

插入结点18(注意原来的红黑树里面就有一个18,因此插入新的数据时,可以根据自己的喜好或者实际情况,判断应该插入到左边还是右边)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
红黑树算法演示链接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重点在B树的性质、B树的插入删除查找的操作,对于B树的代码一般不要求掌握,重点把握B树的手算方法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五叉查找树满足上取整的条件和高度条件的,实际上就是一个五阶B树。

B树的性质:所有的叶子节点(空节点)都出现在树的最后一层,且都在同一层。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

强调B树的每次插入都是插入到最底层的“终端节点”的位置,不能插入到终端节点以上的位置,否则就是错误的插入。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


更复杂情况下的删除节点的问题:(分为三种情况)

在这里插入图片描述
情况1:兄弟够借,借右兄弟的关键字
(以删除关键字38为例)
在这里插入图片描述
在这里插入图片描述
情况2:兄弟够借,借左兄弟的关键字
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
情况3:左右兄弟不够借,那就删完之后和兄弟节点合并到同一个节点
(例:删除节点49)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意B+树的结点的子树个数和关键字个数相等,与B树不一样,B树结点的子树个数=结点的关键字个数+1


B+树通过树的方式查找

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


B+树的另一种查找方式:

B+树通过底下的节点p的查找方式(B+树的顺序查找)

在这里插入图片描述


考研中喜欢将B+树和B树进行对比考察

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
****磁盘是一种慢速设备,所以计算机读磁盘的操作的时间开销很大,因此B+树的高度越高读磁盘的次数也就越多。
****如果用B+树记录的话,对于非叶子节点因为相比于B树不含有信息记录,所以存储到磁盘中的空间耗费的比B树的少,因此在相同的索引空间大小的要求下,我们可以让B+树比比B树保存更多的关键字,也就是让B+树的阶数更大,树高更矮,使得读磁盘的次数更少,查找更快。
在这里插入图片描述

在这里插入图片描述

拉链法处理冲突

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


散列函数的常见处理方法:

方法一:除留余数法

在这里插入图片描述
在这里插入图片描述

方法二:直接定址法

在这里插入图片描述

方法三:数字分析法

在这里插入图片描述

方法三:平方取中法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

之前介绍了拉链法的方法来处理冲突,接下来介绍开放定址法来处理冲突。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
冲突的发生是不可避免的,我们应该尽可能的减少冲突发生的可能性,因此当我们在设计散列函数的时候,对于给定的关键字集合,我们应该根据关键字集合的特性来确定比较合适的散列函数,让这些关键字能够均匀的散列到各个地址中,分布的越均匀发生的冲突的可能性就越小。

注意:拉链法=链地址法

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃小酥肉的小波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值