(此文为王道数据结构学习笔记,只供个人后续复习使用,若有错误,还望指出我改正,谢谢)
分块查找
块内无序,块间有序
索引表存各组关键字,在对索引表进行查找时,也可使用折半查找,当low>high时,low指向的即为所需块,再对块内进行顺序查找
查找效率:有n个元素时,分为个块,每个块个元素时,平均查找长度最少
五叉查找树
N叉查找树
对于N叉查找树,每个结点内,如果查找值大于关键字,则右移查看下一个关键字,如果小于或无关键字了,则向下寻找对应的子树,即小于1号关键字则进入1号子树,小于2号关键字则进入2号子树,小于N号关键字则进入N号子树,若右移无关键字,则进入最后一个子树。
如果保证效率:
当每个结点为1个元素,2个子树时,变为二叉查找树
当满足这两个要求时,此树效率最高,称之为B树
B树
B树,又称多路平衡查找树,B树中所有结点的孩子个数的最大值称为B树的阶,通常用m表示。一棵m阶B树或为空树,或为满足如下特性的m叉树:
1)树中每个结点至多有m棵子树,即至多含有m-1个关键字。
2)若根结点不是终端结点,则至少有两棵子树。
3)除根结点外的所有非叶结点至少有「m/2]棵子树,即至少含有「m/2]-1个关键字。
4所有非叶结点的结构如下:4所有非叶结点的结构如下:
n P0 K1 K2 K3 K4 ... Kn
其中,Ki (i= 1, 2.., n)为结点的关键字,且满足K1<K2 <..<Kn;Pi (i = 0,1.., n)为指向子树根结点的指针,且指针Pi-1所指子树中所有结点的关键字均小于Ki,Pi所指子树中所有结点的关键字均大于Ki,n( [m/2]- 1≤n≤m -1)为结点中关键字的个数。
5)所有的叶结点都出现在同一层次上,并且不带信息(可以视为外部结点或类似于折半查找判定树的查找失败结点,实际上这些结点不存在,指向这些结点的指针为空)。
含有n个关键字的m阶B树,最小高度与最大高度
最小高度:每个结点更可能的满,有m-1个关键字,m个分叉
最大高度:让各层分叉尽可能少,根结点2个,其他只有m/2个分叉