1. 常见时间复杂度(性能从好到差)
- O(1)
- O(logN)
- O(N)
- O(N * logN)
- O(N²) O(N³) … O(N^K)
- O(2^N) O(3^N) … O(K^N)
-
2. 时间复杂度计算公式
Master公式
形如T(N) = a * T(N/b) + O(N^d)(其中a、b、d都是常数)的递归函数,可以直接通过Master公式来确定时间复杂度,即 如果log(b,a) < d,复杂度为O(N^d)
- 如果log(b,a) > d,复杂度为O(N^log(b,a))
- 如果log(b,a) == d,复杂度为O(N^d * logN)
3. 异或运算
异或运算就是无进位相加
异或运算的性质:
1)0^N = N N ^N = 0
2) 异或运算满足交换律和结合律(即与顺序无关)
异或运算应用
两数(a, b)交换
找出数字(N)的二进制形式中最右侧1的位置a = a ^ bb = a ^ ba = a ^ b
N & (~N + 1)
