码迷,mamicode.com
首页 > 其他好文 > 详细

第七章学习小结

时间:2019-06-02 23:01:16      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:空间   不能   速度   动态   时间复杂度   伪随机   线性   法则   过程   

第七章学习的是查找。

首先,查找方式包括顺序查找、折半查找、分块查找。

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

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

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

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

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

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

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

下面是一些对比和总结:

顺序查找好处在于,算法简单,对结构无要求,但缺点在于平均查找长度较大,查找效率低,当n很大时不适用。

折半查找的局限性在于:不适用于链式结构,不能直接定位,不利于动态查找,即要插入某个找不到的数据,数据量过大也不行,可能无连续的内存空间,同时查找的顺序表需要是有序表,若非有序则需要先排序才能进行折半查找,而排序也会占用大量的时间。

平衡二叉树一定是二叉查找树。

平衡二叉树的左子树和右子树的深度之差的绝对值不超过1;左子树和右子树也是平衡二叉树。

 

第七章学习小结

标签:空间   不能   速度   动态   时间复杂度   伪随机   线性   法则   过程   

原文地址:https://www.cnblogs.com/smallsprings/p/10964829.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!