标签:空间 不能 速度 动态 时间复杂度 伪随机 线性 法则 过程
第七章学习的是查找。
首先,查找方式包括顺序查找、折半查找、分块查找。
顺序查找可以通过设置监视哨来减少查找所需的平均时间,免去查找过程中每一步都要检测整个表是否查找完毕。
折半查找中需要注意的是,折半查找的时间复杂度不一定是log2n,因为需要先对顺序表进行排序,才能满足折半查找的要求。
树表的查找中,对二叉排序树的查找,则通过递归的方式查找,因为二叉排序树的特殊存储数值方式,左子树上所有结点的值均小于它的根节点的值,而右子树上所有结点的值均大于它的根节点的值,因此对于任意一层的结点,都可以通过递归的方式来查找。
平衡二叉树的设置,是为了平衡左右子树的高度,使二叉排序树的结构合理,提高查找速度,因为树的高度越小,查找速度越快。
B树的优点在于权衡了内外存读取的问题,通过将二叉树转换为三叉树等其他结构的树,来提高效率。
而B+树则是在B树的进阶版,B+树除了满足所有B树可以满足的功能以外,还能满足分块查找。
处理冲突的方法则包括开放地址法、链地址法,其中开放地址发包括线性探测法、二次探测法和伪随机探测法。当然,无论是那种方法,都无法避免会产生冲突,但能尽量减少冲突的次数,提高空间利用率。
下面是一些对比和总结:
顺序查找好处在于,算法简单,对结构无要求,但缺点在于平均查找长度较大,查找效率低,当n很大时不适用。
折半查找的局限性在于:不适用于链式结构,不能直接定位,不利于动态查找,即要插入某个找不到的数据,数据量过大也不行,可能无连续的内存空间,同时查找的顺序表需要是有序表,若非有序则需要先排序才能进行折半查找,而排序也会占用大量的时间。
平衡二叉树一定是二叉查找树。
平衡二叉树的左子树和右子树的深度之差的绝对值不超过1;左子树和右子树也是平衡二叉树。
标签:空间 不能 速度 动态 时间复杂度 伪随机 线性 法则 过程
原文地址:https://www.cnblogs.com/smallsprings/p/10964829.html