📅  最后修改于: 2023-12-03 14:59:31.156000             🧑  作者: Mango
当我们分析算法的时间复杂度时,通常会用到三种符号来表示算法的复杂度:Big Oh、Big Omega 和 Big Theta。这三种符号都是用来描述算法的渐进复杂度,即算法运行时间在最坏情况下的渐进上限、下限和上限与下限之间的一个紧确界。
Big Oh 表示算法的最坏情况下的渐进上限,可以用来衡量算法的最差运行时间。它的定义为:
f(n) = O(g(n))
当且仅当存在正常数 c 和 N,使得对于所有的 n>N,有 f(n)≤c*g(n)。
这意味着随着输入规模 n 的增加,算法的运行时间不会超过 c*g(n)。
常见的 Big Oh 记号表示方法有:
Big Omega 表示算法的最坏情况下的渐进下限,可以用来衡量算法的最好运行时间。它的定义为:
f(n) = Ω(g(n))
当且仅当存在正常数 c 和 N,使得对于所有的 n>N,有 f(n)≥c*g(n)。
这意味着随着输入规模 n 的增加,算法的运行时间不会比 c*g(n) 慢。
常见的 Big Omega 记号表示方法有:
Big Theta 被用来表示算法的渐进紧确界,同时同时衡量算法的最好和最坏运行时间。它的定义为:
f(n) = Θ(g(n))
当且仅当存在正常数 c1、c2 和 N,使得对于所有的 n>N,有 c1g(n) ≤ f(n) ≤ c2g(n)。
这意味着随着输入规模 n 的增加,算法的运行时间在 c1g(n) 和 c2g(n) 之间。
常见的 Big Theta 记号表示方法有:
在分析算法复杂度时,我们通常只需要用到 Big Oh 符号,因为 Big Oh 表示算法的上限,可以说明算法的时间效率的大致情况。但如果需要更细致的分析,就需要用到 Big Omega 和 Big Theta 符号。