查找有序表折半查找判定树二叉排序树3阶B-树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找有序表折半查找判定树二叉排序树3阶B-树相关的知识,希望对你有一定的参考价值。

参考技术A

首先,长度为n的有序表折半查找判定树的构造方法为:
1)当n=0时
​折半查找判定树为空;
2)当n>0时
​根节点mid(root)=(n+1)/2
​根的左子树是有序表r[1]~r[mid-1]的折半查找判定树(递归)
​根的右子树是有序表r[mid+1]~r[n]的折半查找判定树(递归)


(5)
(2) (8)

由此递归可得判定树如附件图

平均查找长度
ASL=(1×1+2×2+3×4+4×3)/10=29/10

平均查找长度ASL=(1 1+2 2+3 3+4 3+5 2+6 1)/12 = 42/12 = 3.5

2)排序构成有序表
Jan | Feb | Mar | Apr | May | June | July | Aug | Sep | Oct | Nov |Dec
1 2 3 4 5 6 7 8 9 10 11 12
平均查找长度ASL=(1 1+2 2+3 4+4 5)/12 = 37/12

3)平衡二叉树
平均查找长度 ASL = (1 1+2 2+3 4+4 4+5*1)/12 = 38/12

第七章学习小结

本章内容主要为查找。

我们学习了顺序查找、二分查找、二叉排序树、平衡二叉树、B树、B+树。。

顺序查找可以通过设置监视哨来减少查找所需的平均时间,免去查找过程中每一步都要检测整个表是否查找完毕。

折半查找中需要注意的是,折半查找的时间复杂度不一定是log2n,因为需要先对顺序表进行排序,才能满足折半查找的要求。

树表的查找中,对二叉排序树的查找,则通过递归的方式查找,因为二叉排序树的特殊存储数值方式,左子树上所有结点的值均小于它的根节点的值,而右子树上所有结点的值均大于它的根节点的值,因此对于任意一层的结点,都可以通过递归的方式来查找。

平衡二叉树的设置,是为了平衡左右子树的高度,使二叉排序树的结构合理,提高查找速度,因为树的高度越小,查找速度越快。

B树的优点在于权衡了内外存读取的问题,通过将二叉树转换为三叉树等其他结构的树,来提高效率。

而B+树则是在B树的进阶版,B+树除了满足所有B树可以满足的功能以外,还能满足分块查找。

处理冲突的方法则包括开放地址法、链地址法,其中开放地址发包括线性探测法、二次探测法和伪随机探测法。当然,无论是那种方法,都无法避免会产生冲突,但能尽量减少冲突的次数,提高空间利用率。

总结:这个章节难度并不大,最近经过练习,打代码的能力也有所提高,希望可以加快步伐,更快的把知识补起来,融会贯通才能收获更多。

以上是关于查找有序表折半查找判定树二叉排序树3阶B-树的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法学习笔记 查找

数据结构与算法学习笔记 查找

折半查找的二叉判定树是否完全二叉树?为啥?

二叉树二叉查找树

第八章 查找——动态表查找之平衡二叉树

普通二叉树二叉查找树平衡二叉树常见操作汇总