二分查找和均衡二叉树

数组,链表和树

数组
是在内存空间中分配的连续的存储空间, 因存储位置固定,数组检索较快(直接定位数组下标,即存储地址)。检索的时间复杂度为O(1)。但插入数据时,时间复杂度较差,O(n),数组内插入数据之后的数据均要位移。

链表
内存空间中分散的存储地址,以指针为逻辑牵引,建立虚拟的链式结构。搜索数据的时间复杂度为O(n),但插入新数据的时间复杂度为O(1)。

二叉树
理想状态下二叉树的插入,查找的时间复杂度均为O(logN),均衡了数组,链表两者的特点,适用于插入,和查找操作均衡且大量的场景下。二叉树在此场景下的性能优于数组和链表。

均衡二叉树
均衡二叉树才是对上述二叉树性能的完美体现,由于均衡二叉树满足特性,每个Node结点左结点的数据小于根节 点,右子树的数据大于根节点。由此,在遍历时,所查找数据仅需要递归的和根结点对比(迅速定位后续查找在结点的 左子树还是在右子树)。其查找逻辑等同于对数组的二分查找法,时间复杂度为O(logN)。均衡二叉树的插入操作,也是伴随着二分递归操作,定位位置,插入结点(就单个结点来说,地址指针 TreeNode.left和LinkedNode.next)一致,那么插入开销等同于查找开销。

B树
多子结点的均衡二叉树。

理想状态下二叉树的时间开销等同于对数组的二分查找。

二叉树的查找性能和二分查找(依托于数组)一致,但底层数据存储又是分散的(类似链表),如果进一步扩大此特征,淡化树的结构,便能更优异的利用数组和链表的特性。实现可二分查找的链表(就还是上述的均衡二叉树)。
但是对此进一步优化,链表的结点存储一个有序数组(B+树)(因其存储特性与物理机更匹配,其查询效率很高(完美利用了二分查找效率当然高)常用于数据库的数据映射,)。

b+树
b*树和b+树的最终目的一致,对b+树的存储结构建成过程进行优化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值