算法笔记

本文探讨了二叉搜索树在极端情况下的性能退化问题,并介绍了平衡二叉搜索树(如红黑树、AVL)如何保持操作时间复杂度在O(log2n)。此外,还涉及了二分查找的平均长度、有向图环检测方法以及在不同数据结构(如字典树)中选择以提高检索速度。文章进一步讨论了寻找最大两个数的最少比较次数和各种查找算法的时间复杂度,包括顺序查找、分块查找、二分查找和哈希查找。
摘要由CSDN通过智能技术生成

    对于一般的二叉搜索树(Binary Search Tree),其期望高度(即为一棵平衡树时)为log2n,其各操作的时间复杂度(O(log2n))同时也由此而决定。但是,在某些极端的情况下(如在插入的序列是有序的时),二叉搜索树将退化成近似链或链,此时,其操作的时间复杂度将退化成线性的,即O(n)。我们可以通过随机化建立二叉搜索树来尽量的避免这种情况,但是在进行了多次的操作之后,由于在删除时,我们总是选择将待删除节点的后继代替它本身,这样就会造成总是右边的节点数目减少,以至于树向左偏沉。这同时也会造成树的平衡性受到破坏,提高它的操作的时间复杂度。

    平衡二叉搜索树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。常用算法有红黑树、AVL、Treap、伸展树等。在平衡二叉搜索树中,我们可以看到,其高度一般都良好地维持在O(log2n),大大降低了操作的时间复杂度。

--------------------------------------------------------------------可爱的分界线-----------------------------------------------------------------------------------

二分查找方法平均长度为O(log2n)

当中间的没有找到的时候,left和right下标应该左移或者右移(left++,right--),实质是( right = middle-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值