目录
一、数据结构之B树
1、B树的数据存储是key-value类型的;
2、B树有几个叉:并不能确定,要看具体实现;
3、M阶B树:每个节点最多有M-1个值,并且以升序排列。
1.1、2-3-4树的定义
1、2--节点
包含一个键(及其对应的值)和两条链,左连接指向2-3-4树中都小于该节点,右链接所指向的值都大于该节点。
2、3--节点
包含两个键(及其对应的值)和三条链,左链接指向2-3-4树 中的键都小于该节点,中链接指向的2-3-4树中的键都位于该节点的两个键之间,右连接指向的2-3-4树 中的键都大于该节点。
3、4--节点
包含三个键(及其对应的值)和四条链,左链接指向2-3-4树 中的键都小于该节点,左中链接和右中指向的2-3-4树中的键都位于该节点的两个键之间,右连接指向的2-3-4树 中的键都大于该节点。
2-3-4树的特点:所有叶子节点拥有相同的深度。
二、B树的特点
B树中允许一个节点包含多个Key,可以是3个、4个、5个甚至是更多,并不确定,需要看具体实现。现在我们选择一个参数M来构建一个B树,我们可以将其称为M阶的B树。那么这棵树会有以下特点:
- 每个节点最多有M-1个Key,并且以升序排列
- 每个节点最多能有M个子节点
- 根节点至少有两个子节点
三、存储数据
若参数M选择为5,那么每个节点最多包含4个键值对,我们以5阶B树为例,看看B树的数据存储。
①在空树中插入36
②插入21,95和40
③继续插入50(50的会插入在40和95的中间,那么这个节点将不满足每个节点最多有M-1个Key,所以只能让40(中间键)升序)
④继续插入10和18
⑤继续插入37(37的会插入在36的后边,那么这个节点将不满足每个节点最多有M-1个Key,所以只能让21(中间键)升序)
........按照这样的方式依次往下进行, B树就被构建了出来。
四、优势
在实际应用中B树的阶数一般比较大(通常大于100),所以,即使存储大量的数据,B树的高度仍然比较小,这样在某些引用场景下,就能体现出它的优势:降低对于树的访问次数,实现树的平衡。
五、红黑树和B树对比
5.1、内存性能对比
1、为什么要有B树?
性能对比红黑树要高,对比次数相对较少,所以内存优于多叉树,为内存最优二叉树。
B树磁盘寻址较快,所以B树多用于磁盘,原因是分出多个叉,降低高度,降低寻址的次数和时间。
2、数据如何寻址?
数据寻址主要发生在磁盘中,其中所消耗的时间是磁头移动的物理时间+平均盘面旋转半圈所消耗的时间。
5.2、磁盘性能对比
B树多用于磁盘,原因是分成多个叉,降低树的高度,降低寻址次数和时间。
红黑树和B树都是在磁盘当中--->数据寻址浪费时间---->磁头移动的物理时问+平均盘面旋转半圈