7、查找
最后更新于
顺序存储
链式存储
无序表的ASL:
有序表的ASL:
顺序存储(有序)
用折半查找找分块索引表(low>high时查找失败,则取现在low所指向的分块)
在分块内用顺序查找
树结构
顺序存储
链式存储
B树中所有结点的孩子个数的最大值称为B树的阶,对于m阶B树
树中每个结点至多有m棵子树,即至多含有m-1个关键字
若根结点不是终端结点,则至少有两棵子树
所有的叶结点都出现在同一层次上,并且不带信息(可以视为外部结点或类似于折
设树的阶数为m,有n个关键字,树高记为h
设为m阶B树,即每个节点中最多只能插入m-1个关键字
当节点不满时,直接插入关键字
节点已满
将当前节点的中间的关键字提为父节点
将原节点中剩下的关键字拆分为两个
非终端节点:用直接前驱代替删除的节点
终端节点
节点中关键字没有低于下限:直接删除
节点中关键字数量低于下限
兄弟够借
从兄弟中借一个变成父节点
原父节点拉下来补充
兄弟不够借
将两个节点合并
将两个节点中间的父节点也合并进来
此时若父节点不够,则继续按照此逻辑处理
记录数=叶子节点数
类似于索引分块查找
B+树支持顺序查找
顺序存储
链式存储
数字分析法
平方取中法
开放定址法
线性探测法:向后推移
双散列法(再散列法):使用另一个散列函数再次计算
伪随机序列法:推移的距离是伪随机序列
拉链法:直接挂在链表后面
表长为m,p为不大于m的质数。
可能的取值范围取决于p的值,即[0, p-1]
判定树高:
查找成功的ASL:
设共有n条记录,则分块长度最理想应为
除根结点外的所有非叶结点至少有棵子树,即至少含有个关键字
最大树高:
最小树高:
直接定址法:
除留余数法:
平方探测法(二次探测法):推移的距离变为
装填因子:
成功的平均查找长度:
失败查找长度: