Life sucks, but you're gonna love it.

0%

Algorithm | Computational Complexity

算法复杂度

定义 Big-Oh, $O(*)$ 表示算法的复杂度

$O()$ 表示最差情况的算法复杂度; $\Omega()$ 表示最好情况下的算法复杂度;当某种算法的 $O$ 和 $\Omega$ 的值相同时,可以用 $\theta$ 表示。

举个例子: 在计算字符串长度时,如果我们一开始就将字符串的长度作为输入记录在$len$ 变量下,那么在读取字符串长度时, 该算法的计算复杂度为$\Omega(1)$ 和$O(1)$, 那么这时候可以说这个算法复杂度为 $\theta(1)$

算法复杂度可能的几种情况:

  • $O(1)$ : 算法复杂度为常数,即不管输入的长度为多少,复杂程度是固定的
  • $O(n)$: 算法复杂度为线性,即复杂度与输入的长度成正比
  • $O(n^2)$: 算法复杂度为指数型,即复杂度是输入长度的平方
  • $O(log(n))$ 算法复杂度为对数型,即复杂度是输入长度的对数

还可能存在的算法复杂度有 $O(2^n), O(nlog(n))…$ 具体情况需要具体分析。