什麼是大O符號?它有什麼用途?
何謂Ω符號和Θ符號?它們與大O符號有何不同?
給出以下函數的大O符號:f(n)=2n^2+3n+1。
給出以下函數的Ω符號:f(n)=log(n)+5。
如果算法A的時間複雜度為O(n),而算法B的時間複雜度為O(n^2),那麼在什麼情況下A的效率高於B?
Asymptotic Notations 是一個衡量算法運行時間複雜度的工具,其關注算法運行時間隨著輸入大小增長的趨勢。以下是三種通常使用的 Asymptotic Notations:
大O符號(Big O Notation)
Big O Notation 用於描述算法最壞情況下的時間複雜度。當輸入數據增長時,算法的時間複雜度與某個常數 k 成正比,而且當輸入數據數值增大時,此常數 k變得越來越不重要。
比如說:當n趨向無限大時,O(n) 就是一種線性時間複雜度算法。簡單來說,因為一個有n個元素的列表,最多需要檢查n次才能找到目標元素,所以時間複雜度是O(n)。
大Ω符號(Omega Notation)
Ω Notation 用於描述算法最優情況下的時間複雜度。當輸入數據增長時,算法的時間複雜度與某個常數 k 成正比,且算法常數 k 的值是趨近最小的。
比如說:當n趨向無限大時,Ω(n lg n) 是快速排序的運行時間複雜度。簡單來說,當列表經過排序後數據的查找時間變得更加快速,此類算法優於平均水平,所以時間複雜度是Ω(n lg n)。
大θ符號(Theta Notation)
θ Notation 用於描述算法的平均情況下的時間複雜度。當輸入數據增長時,算法的時間複雜度和某個常數 k 成正比,且算法常數 k 的趨近平均值。因為平均時間複雜度並不總是最壞情況複雜度或最優情況複雜度的平均值,因此θ Notation 是一個更為精確的算法分析工具。
比如說:當n趨向無限大時,θ(n) 是一個簡單查找算法的時間複雜度。簡單查找需要檢查列表中的每個元素,所以時間複雜度是 θ(n) 。例如輸入一個列表並且查找元素。
總之,Asymptotic Notations 是一種幫助計算設計和改進算法的工具,尤其對那些必須處理大量複雜而大量的數據的算法來說,更是必要的。
答案:當n趨近於無限大時,此算法的執行時間會隨著n log n的增加而增加。
答案:當n趨近於無限大時,此算法的執行時間會隨著n^2的增加而急劇增加。
答案:當n趨近於無限大時,此算法的執行時間會急劇增加,甚至可能導致程序崩潰。
答案:此算法的最壞情況時間複雜度是O(n log n)。
答案:此算法的執行時間不會隨著n的增加而增加,而是恆定的。