我們常說的時間複雜度, 如o(n^2),o(n),o(1)等。為什麼我們要用o而不是用abcdefg呢?
θ(g(n)) =啥意思呢?意思就是說f(n) = θ(g(n))時,總能找到乙個n0,c1,c2,有任意n >= n0,c1和c2,使得不等式
0 <= c1g(n) <= f(n) <= c2g(n)
成立。也就是說,函式f(n)基於某乙個n0來說是有上下界的。
ω(g(n)) =這種情況下我們稱函式f(n)有漸進下界,即對於任意的n >= n0,都有乙個常量c,使得不等式
0 <= cg(n) <= f(n)
成立。
o(g(n)) =這種情況下我們稱函式f(n)有漸進上界,即對於任意的n >= n0,都有乙個常量c,使得不等式
0 <= f(n) <= cg(n)
成立。
說白了,就是函式f(n)在n >= n0的情況下,g(n)乘以乙個常量總是能大於f(n)。
放到我們的時間複雜度上來理解:
例如:我們乙個演算法f(n)的時間複雜度為o(n^2),即對於我們這個演算法來說,總會存在常量n0,c,對於任意n >= n0,總是有f(n) >= c(n^2),當演算法處於最壞的情況,就是f(n) = c(n^2)。
另外還有o和ω的定義,有興趣的同學可以自行搜尋一下。
時間複雜度解析
演算法,作為乙個programmer應該再清楚不過。乙個演算法的好壞是依靠什麼標準 來評判的呢?那就是時間複雜度和空間複雜度。今天就來 下時間複雜度,什麼是時間複雜度呢?在電腦科學中,時間複雜性,又稱時間複雜度,演算法的時間複雜度是乙個函式,它定性描述該演算法的執行時間。這是乙個代表演算法輸入值的字...
時間複雜度 解析
通常是用 大 o big o 表示法,來表示時間最壞複雜度 公式t n o f n f n 既函式總執行次數 推導大o階方法 1.用常數 1 取代執行時間中的所有加法常數 2.在修改後的執行次數函式中,只保留最高端 3.如果最高端存在且不是 1 則去除與這個項相乘的常數 常數階 o 1 示例 int...
解析時間複雜度和空間複雜度
說明 時間複雜度和空間複雜度從字面上理解 時間複雜度 時間複雜度的表示方法 一般用大o符號表示法表示,o f n n是影響複雜度變化的因子,f n 是複雜度的演算法。這個表示方法不是具體的運算時間,而是 執行時間的增長變化趨勢。隨著n的增長,演算法的執行運算時間增長速度記為f n 常見的時間複雜度量...