1查找基础,顺序查找
查找成功的ASL
查找失败的ASL
查找算法
2折半查找和折半查找判定树
mid=(low+high)/2 向下取整
要查找的元素8比mid所在位置元素大,所以low=mid+1
8比当前mid[4]=5要大,继续low=mid+1,即low=high
mid[5]=8与要查找的元素8相等,查找结束。
折半查找判定树
mid为2,取出来
计算2左边的mid,mid=(0+1)/2=0
把mid取出来作为一个结点
对0左空节点就不做操作了,
然后继续对结点1做mid=(low+high)/2=1
开始划分右边
先处理左边这一部分
比如要找到结点1,就是比较2到1路径上的三个结点
蓝色-查找失败来到的位置
ASL1成功,ASL2失败
二分查找(折半查找)
分块查找
在这个结构体中的元素顺序是有序的,接下来用折半查找的方法
再来看一个分块查找的例子
此时还需要在分块里面去找,上图只是找到了索引所在的位置范围。
再看一个例子
high<low 表明查找结束,就去low所指的块中查找元素。下面看一种特殊情况。
此时low所指的块为空
二叉排序树
二叉排序树查找的算法
递归版 √
5二叉排序树 插入删除
B树、B+树
B树:可以有多叉
五阶B树
多少阶=最大个数+1
拆分,节点个数/2,向上取整。 5/2=3,所以把6当成根节点
此时关键的个数又超出了范围。
如果要删除的结点在终端结点,并且终端结点的个数大于2,就可直接删除。
删除非终端关键字,取左最大,或者右最小。
让18上去,17下来,然后就可以删除15了
6下来