算法知识归纳

本文详细介绍了常见的数据结构,如数组、栈、队列、堆和各种类型的树,以及二叉树的相关性质。讨论了递归调用的代价,强调了位运算符和逻辑运算符的使用,包括按位与、按位或、按位异或和位移操作,并探讨了它们在解决问题时的应用。此外,还提到了时间复杂度和空间复杂度的概念。
摘要由CSDN通过智能技术生成
1. 常见的数据结构
  • 数组(一维、二维)
  • 队列
  • 堆(每个结点的值都大于其左孩子和右孩子结点的值,称之为大根堆;每个结点的值都小于其左孩子和右孩子结点的值,称之为小根堆)
  • 父结点索引:(i-1)/2,左孩子索引:2i+1,右孩子索引:2i+2
  • 大根堆:arr(i)>arr(2i+1) && arr(i)>arr(2i+2)
  • 小根堆:arr(i)<arr(2i+1) && arr(i)<arr(2i+2)
  • 链表(单链表、双向链表、双向循环链表)
  • 树(二叉树、满二叉树、完全二叉树、平衡二叉树、二分搜索树、红黑树、B-树、B+树、B*树等等)
  • 二叉树:任何一个节点的子节点数量不超过2。
  • 满二叉树:所有叶子结点都在最后一层,且节点的总数为2^n-1(n为树的高度)。
  • 完全二叉树:所有叶子结点都在最后一层或倒数第二层,且节点优先左排列。
  • 平衡二叉树:它是一颗空树或左右两个子树的高度差的绝对值不超过1,且子树也是同理。
  • 二分搜索树:左节点小于等于根节点值,右节点大于等于根节点值。
  • 红黑树:平衡二叉树,根节点和叶子节点黑色,红节点必须有两个黑色节点,从任意节点到叶子节点都包含相同的黑色节点。
2. 递归调用是有代价的,其代价为函数调用和系统栈空间。
3. 按位运算法
  • 【&】按位与,两真才为真。
  • 【|】按位或,一真就为真。
  • 【^】按位异或,不同为真,相同为假。
  • 【~】按位非,取反。
4. 逻辑运算符
  • 【&&】逻辑与,两真才为真。
  • 【||】逻辑或,一真就为真。
  • 【!】逻辑非,取反。
5. 位移操作符
  • 【<<】左移,右边空位填0。
  • 【>>】右移,高位为0则左边空位填0,高位为1则左边空位填1。
  • 【>>>】无符号右移,左边空位填0。
6. 按位运算符和逻辑运算符优先级
  • 按位运算符 > 逻辑运算符
  • 【&】>【^】>【|】>【&&】>【||】
7. 有符号右移一位【>>1】相当于除以2操作,这里要注意:负数的有符号右移一位操作是增大一半,正数的有符号右移一位操作是减少一半,-1>>1值为-1,1>>1值为0。
8. &1操作可以来判断奇偶性,值为1代表为奇数,值为0代表为偶数。
9. 可以利用num & (num - 1)来判断num对应的二进制有多少个1。
10. m ^ n可以得知m和n对应的二进制相差多少个1。
11. 时间复杂度:O(n),空间复杂度:O(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值