一個算法的時間複雜度,指算法運行的時間。
假設數據輸入規模是n,算法的複雜度可以表示爲f(n)的函數
一。大O記號
假設f(n)和g(n)的定義域是非負整數,存在兩個正整數c和n0,使得n>n0的時候,f(n)<c*g(n),則f(n)=O(g(n))。可見O(g(n))可以表示算法運行時間的上界。O(g(n))表示的函數集合的函數是階數不超過g(n)的函數。
二。Ω記號
Ω記號與大O記號相反,他可以表示算法運行時間的下界。Ω(g(n))表示的函數集合的函數是所有階數超過g(n)的函數。
三。Θ記號
Θ記號介於大O記號和Ω記號之間。他表示,存在正常數c1,c2,n0,當n>n0的時候,c1*g(n)<f(n)<c2*g(n),則f(n)=Θ(g(n))。他表示所有階數與g(n)相同的函數集合。
四。小o記號
f(n)=o(g(n))當且僅當f(n)=O(g(n))且f(n)≠Ω(g(n))。也就是說小o記號可以表示時間複雜度的上界,但是一定不等於下界。
五。例子
假設f(n)=2n^2+3n+5,f(n)=O(n^2)或者f(n) = O(n^3)或者f(n)=O(n^4)或者……
f(n)=Ω(n^2)或者f(n)=Ω(n)或者f(n)=Ω(1)
f(n)=Θ(n^2)
f(n) = o(n^3)或者f(n)=o(n^4)或者f(n)=o(n^5)或者……
注:n^2表示n的平方,以此類推。