查找算法讲解---Mysql索引入门必看教程

一、二叉查找树

二叉树特性:左子树结点值<根结点值<右子树结点值

插入新结点后如何调整“不平衡"问题

二、平衡二叉树

树上任一结点的左子树和右子树的高度之差不超过1。

几个概念:

  1. **结点的平衡因子:**左子树高-右子树高(平衡二叉树的平衡因子只可能是-1,0,1)

  2. 最小不平衡子树:从插入点往回找到第一个平衡结点,调整以该结点为根的子树

    image-20240531141057044

image-20240531141131983

在插入操作中,只要将最小不平衡子树调整平衡,则其他祖先结点都会恢复平衡

三、红黑树

为什么要有这东西?有平衡二叉树不就够了吗?

image-20240531141901122

四、B树

看之前的平衡二叉树有什么问题?看下面的图

image-20240531142508879

不过要记住的是,这种树也必须满足 “平衡” 这种特性:不能有高度差

image-20240531142706757

如果说满足上述特性,就说它是一个 B树

B树中所有结点的孩子个数的最大值称为B树的阶:也就是有最多的那个分叉数

image-20240531143339695

五、B+树

image-20240531144255619

B+树相较于B树:

直接看视频吧:https://www.bilibili.com/video/BV1VS411K7Xw/


B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子到根的距离相同。

B-Tree 索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是从索引的根节点开始进行搜索。

根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找。通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值的上限和下限。最终存储引擎要么是找到对应的值,要么该记录不存在。

叶子节点比较特别,它们的指针指向的是被索引的数据,而不是其他的节点页(不同引擎的“指针”类型不同)。图 5-1中仅绘制了一个节点和其对应的叶子节点,其实在根节点和叶子节点之间可能有很多层节点页。树的深度和表的大小直接相关。

B-Tree对索引列是顺序组织存储的,所以很适合查找范围数据。

六、哈希表

数据元素的关键字与其存储地址有直接相关,看下图

image-20240601084156153

6.1 处理冲突的方法

  1. 拉链法:image-20240601084322424

98)]

6.1 处理冲突的方法

  1. 拉链法:[外链图片转存中…(img-QXJn3Jgq-1717546719898)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值