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)
  • O(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)交换
    1. a = a ^ b
    2. b = a ^ b
    3. a = a ^ b
    找出数字(N)的二进制形式中最右侧1的位置
    1. N & (~N + 1)