引言:
- 我们都知道二叉查找树的查找的时间复杂度是O(log N),其查找效率已经足够高了,那为什么还有B树和B+树的出现呢?难道它两的时间复杂度比二叉查找树还小吗?
- 答案当然不是,B树和B+树的出现是因为另外一个问题,那就是「磁盘IO」。众所周知,IO操作的效率很低,当在大量数据存储中,查询时我们不能一下子将所有数据加载到内存中,只能逐一加载磁盘页,每个磁盘页对应树的节点。造成大量磁盘IO操作(最坏情况下为树的高度)。平衡二叉树由于树深度过大而造成磁盘IO读写过于频繁,进而导致效率低下
- 所以,我们为了减少「磁盘IO」的次数,就你必须降低Tree的深度,将“瘦高”的树变得“矮胖”
- 一个基本的想法就是:
- 每个节点存储多个元素
- 摒弃二叉树结构,采用多叉树
- 一个基本的想法就是:
B-Tree:
- 三阶B-Tree(红色方块:Data值、黄色方块:指针域):