查找有序表折半查找判定树二叉排序树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-树的主要内容,如果未能解决你的问题,请参考以下文章