算法:二分查找和二叉树

好的算法可能在数据规模不大的时候并无优势,但当我们处理大数据问题的时候,优势就极为明显了。

二分查找

二分查找有个前提条件是数组已经排序了,可以是数值排序,也可以是字母排序或其他的排序,但一定不能是杂乱无章的。二分查找相比较顺序查找而言,数据量越大,优势越明显,二分查找的时间复杂度是O(logN),底数是2,但对于算法复杂度而言,无论底数是多少,其复杂度都是O(logN)。那顺序查找的平均查找长度ASL是多少呢,假设每个元素出现的概率相等,那就是(1/n) * n*(1+n)/2 = (1+n)/2
如下图所示:
二分查找和顺序查找网易公开课视频来自网易公开课

二叉树

以下内容网易公开课来源

利用递归定义树
子树不相交才是树,N个结点的树包含N-1条边

节点的度,注意和图的入度和出度的区别

树的层次是深度
儿子兄弟节点表示法,使用了二叉树链表

二叉树

度为2的树,称为二叉树。
二叉树
二叉树和一般度为2的树的区别:有左右之分

二叉树每一层最多有 2 i − 1 {2}^{i-1} 2i1个节点,根节点是第一层,所以是 2 0 = 1 {2}^{0} = 1 20=1个。

完美二叉树和完全二叉树

注意完全二叉树只是要求序号和完美二叉树保持一致,下图中的完美二叉树隐去了右边一些树枝。
所以完美二叉树一定是完全二叉树,但反之不一定成立。

上图中完美二叉树的完整图

二叉树的存储

采用数组的形式:完全二叉树是最适合的方式。有两个规律:
  • i节点对应的父节点是i/2向下去整;父节点的左子节点是 i ∗ 2 i*2 i2,右子节点是 2 ∗ i + 1 2*i +1 2i+1
  • 如果不是完全二叉树,可以对缺失的点置为空来表示,但这样的带来的空间消耗就很大了。
采用包含value和指向左右儿子节点指针的链表结构

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值