今天主要讲的是在查找时常用的数据结构:平衡二叉树,B-树和B+树。
今天所有的学习知识都是参考严蔚敏教授的《数据结构》这本书,由于这本书是从查找表这章引入的B树,B+树和B-树,所以,我们就先从查找表讲起,并在里面扩充一些常见的知识点。
查询表
查找表(search table)是一种数据结构,常见的操作有:
- 查询某个元素是否在查找表中
- 查询某个元素的属性
- 在查找表插入一个元素
- 在查找表中删除某个元素
根据这常见的四个操作,查找表可以分为静态查找表和动态查找表。如果只对查找表的元素进行前两中“查询”操作,则此类查询表为静态查询表;若对查找表中元素进行“更新”操作(增删操作),则此类查询表为动态查询表。
静态查询表
对于查找表的查询操作,归其本源还是一个遍历的过程。
而对于有序表的操作,直接解决思想就是二分法或者叫折半查找法。(注:这里的这般查找法仅限于顺序存储结构,对线性链表不能使用)
进行查找的方法除了折半查找之外(将元素每次二等分),还有斐波那契查找(将元素每次斐波那契序列等分)。
斐波那契查找
如果将表按照斐波那契序列的值(如下所示)进行分割
F 0 = 1 , F 1 = 1 , F i = F i − 1 + F i − 2 , i > 1 F_0=1,F_1=1,F_i=F_{i-1}+F_{i-2},i>1 F0=1,F1=1,Fi=Fi−1+Fi−2,i>1
使得每个元素段中元素的个数为 F i F_i Fi。假设开始时&