一、查找的基本概念
1. 静态查找表与动态查找表的区别:是否需要动态地插入或删除。
2. 适合静态查找表的查找方法:顺序查找、折半查找、散列查找等。适合动态查找的查找方法:二叉排序树的查找、散列查找等。
3. 顺序查找缺点:当n较大时,平均查找长度较大,效率低;优点是对数据元素的存储没有要求,顺序存储或链式存储皆可。
4. 顺序查找中若有n个查找成功结点,则必相应有n+1个查找失败的结点。
5. 折半查找只适用于有序的顺序表。适合折半查找的存储结构必须具有随机存取的特性。
6. 折半查找不成功时的查找长度为从根结点到对应失败结点的父结点的路径上的结点数。
7. 折半查找的时间复杂度为O(log2n)。
8. 分块查找的平均查找长度为索引查找和块内查找的平均长度之和。
9. 分块查找时,数据的组织方式为:数据分为若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块。
二、B树和B+树
1. B树
1)m阶B树中每个结点至多有m棵子树(或至多有m-1个关键字)。
2)若根结点不是终端结点,则至少有两颗子树。
3)除根结点外的所有非叶结点至少有⌈m/2⌉颗子树(即至少有⌈m/2⌉-1个关键字)。
4)所有的叶结点都出现在同一层次,并且不带信息。
5)B树为所有结点的平衡因子均等于0的多路查找树。
6)B树的高度不包括叶结点那一层。
7)假设一棵3阶B树,共有8个关键字,则高度范围:2<=h<=3.17。
logm(n+1)<=h<=log⌈m/2⌉((n+1)/2)+1
8)当查找到叶结点时(对应的指针为空指针),则说明树中没有对应的关键字,查找失败。
9)B树中的插入关键字一定是插入在最底层中的某个非叶结点内。
- B+树
- 每个分支结点最多有m棵子树(子结点)
- 非叶根结点至少有两棵子树,其他每个分支结点至少有⌈m/2⌉棵子树。
- 结点的子树个数与关键字个数相等。(太多了自己看书)