前言
在學習計算機算法時,知道插入排序的時間複雜度是O(n2),那O記號到底是什麼意思呢?本文主要介紹幾個算法分析時用到的記號。
大O記號
定義:O(g(n)) = { f(n) : 存在正常數c和n0 ,使對所有的n >= n0,都有 0 <= f(n) <= cg(n) }。大O記號給出函數的漸進上界。
要使得 0 <= f(n) <= cg(n)
存在c = 9/2 ,n0 = 1,使得對所有的n >= n0都有 0 <= f(n) <= cg(n)。
f(n)不高於g(n)的階
O(g(n) 以及後面講到的記號表示的都是集合,而f(n) = O(n2)的實際意義 是 f(n) ∈ O(n2)。
則 g(n) = O(n2) , f(n) = O(n2)
大Ω記號
定義:Ω(g(n)) = { f(n) : 存在正常數c和n0 ,使對所有的n >= n0,都有 0 <= cg(n) <= f(n) }。大Ω記號給出函數的漸進下界。
f(n)不低於g(n)的階
則 g(n) = Ω(n) , f(n) = Ω(n)
大Θ記號
定義:Θ(g(n)) = { f(n) : 存在正常數c1和c2和n0 ,使對所有的n >= n0,都有 0 <= c1g(n) <= f(n) <= c2g(n) }。大Θ記號給出函數的漸進確界。
f(n)與g(n)的階數相同
則 g(n) = Θ(n) , f(n) =Θ(n2)
小O記號
定義:o(g(n)) = { f(n) : 對任意正常數c,存在n0 ,使對所有的n >= n0,都有 0 <= f(n) <= cg(n) }。小o記號給出函數的非漸進緊確的上界。
f(n)小於g(n)的階
小記號
定義:(g(n)) = { f(n) : 對任意正常數c,存在n0 ,使對所有的n >= n0,都有 0 <= cg(n) <= f(n) }。小記號給出函數的非漸進緊確的下界。
f(n)高於g(n)的階