分析算法时间复杂度时,主要关心的是影响最大的操作
主要的几个渐进符号(及其代表的意思)如下:
O Ω Θ o ω
<= >= = < >
大写O符号
大O符号是给定执行时间或次数的上限,即小于等于
f(n)=O(g(n)),这里f(n)是分析出来算法的执行次数的函数
O的定义:当且仅当c>0 and n0>0,使0<=f(n)<=c(g(n)) 成立,对于所有的 n>=n0
cg(n)即是函数f(n)的上限。
Ex: f(n)=n^3+O(n^2)
means there is fun h(n)∈O(n^2)
such that f(n)=n^3+h(n)
Ex: n^2+O(n)=O(n^2)
means for any f(n)∈O(n)
there is an h(n)∈O(n^2)
such that n^2+f(n)=h(n)
Ω符号
Ω符号是给定执行时间或次数的下限,即最小需要的时间或
Ω的定义:当且仅当c>0 and n0>0,使0<=c(g(n))<= f(n)成立,对于所有的 n>=n0
Ex:√n = Ω(lgn)
根号下n至少是lgn的常数倍
1
Θ符号
Θ符号是大O和Ω的交集,即等于(=)
Θ(g(n)) = O(g(n)) ∩ Ω(g(n))
1
1
1
1
1