對於一個演算法,考慮所有大小為
- Big-$O$:我們說一個演算法的執行時間為
$O(f(n))$ ,若存在一個常數$c > 0$ 、以及一個$n_0\in\mathbb{N}$ ,使得對所有的$n > n_0$ 皆有$T(n) \le cf(n)$ 。 - Big-$\Omega$:我們說一個演算法的執行時間為
$\Omega(f(n))$ ,若存在一個常數$c > 0$ 、以及一個$n_0\in\mathbb{N}$ ,使得對所有的$n > n_0$ 皆有$T(n) \ge cf(n)$ 。 - Big-$\Theta$:我們說一個演算法的執行時間為
$\Theta(f(n))$ ,若存在兩個常數$c_1, c_2 > 0$ 、以及一個$n_0\in\mathbb{N}$ ,使得對於任意的$n > n_0$ 都有$c_1f(n) \le T(n) \le c_2f(n)$ 。
最簡單的說法,是指計算模型嚴謹地定義了「$O(1)$ 的時間可以做什麼」、以及「資料的存取方式」。
- 身為一個資訊系理論宅,我們使用的對數函數
$\log$ ,在沒有額外說明的情形下,一律以 2 為底。