以下内容来自此处.
在进行算法的复杂度分析的时候, 我们常常使用以下四个符号, 即
o,
O,
Ω和
Θ. 假设一个算法的时间(或空间, 以下统一使用时间)复杂度为
T(n), 其中
n是这个算法处理的数据集的规模, 则这四个符号的定义如下:
- 若存在常数
c和
n0, 使得当
n≥n0时,
T(n)≤cf(n), 即这个算法的时间复杂度的上限是
f(n), 则这个算法的时间复杂度为
O(f(n)).
- 若存在常数
c和
n0, 使得当
n≥n0时,
T(n)≥cf(n), 即这个算法的时间复杂度的下限是
f(n), 则这个算法的时间复杂度为
Ω(f(n)).
- 若这个算法的时间复杂度同时是
O(f(n))和
Ω(f(n)), 即这个算法的时间复杂度恰好是
f(n), 则我们称这个算法的时间复杂度为
Θ(f(n)).
- 若这个算法的时间复杂度是
O(f(n))但是它的时间复杂度不是
Θ(f(n)), 即这个算法的时间复杂度的上限是
f(n), 但是它的时间复杂度不等于
f(n), 则我们称这个算法的时间复杂度为
o(f(n)).