算法复杂度分析的符号

以下内容来自此处.
在进行算法的复杂度分析的时候, 我们常常使用以下四个符号, 即 o o , O O , Ω \Omega Θ \Theta . 假设一个算法的时间(或空间, 以下统一使用时间)复杂度为 T ( n ) T(n) , 其中 n n 是这个算法处理的数据集的规模, 则这四个符号的定义如下:

  • 若存在常数 c c n 0 n_0 , 使得当 n n 0 n\ge n_0 时, T ( n ) c f ( n ) T(n)\le cf(n) , 即这个算法的时间复杂度的上限是 f ( n ) f(n) , 则这个算法的时间复杂度为 O ( f ( n ) ) O(f(n)) .
  • 若存在常数 c c n 0 n_0 , 使得当 n n 0 n\ge n_0 时, T ( n ) c f ( n ) T(n)\ge cf(n) , 即这个算法的时间复杂度的下限是 f ( n ) f(n) , 则这个算法的时间复杂度为 Ω ( f ( n ) ) \Omega(f(n)) .
  • 若这个算法的时间复杂度同时是 O ( f ( n ) ) O(f(n)) Ω ( f ( n ) ) \Omega(f(n)) , 即这个算法的时间复杂度恰好是 f ( n ) f(n) , 则我们称这个算法的时间复杂度为 Θ ( f ( n ) ) \Theta(f(n)) .
  • 若这个算法的时间复杂度是 O ( f ( n ) ) O(f(n)) 但是它的时间复杂度不是 Θ ( f ( n ) ) \Theta(f(n)) , 即这个算法的时间复杂度的上限是 f ( n ) f(n) , 但是它的时间复杂度不等于 f ( n ) f(n) , 则我们称这个算法的时间复杂度为 o ( f ( n ) ) o(f(n)) .

猜你喜欢

转载自blog.csdn.net/nankai0912678/article/details/105800810