一個語句的頻度是指該語句在算法中被重復執行的次數。算法中所有語句的頻度之和記為T(n),它是該算法問題規模n的函數,時間復雜度主要分析T(n)的數量級。算法中基本運算(最深層循環內的語句)的頻度與Tn)同數量級,因此通常采用算法中基本運算的頻度fn)來分析算法的時間復雜度3。因此,算法的時間復雜度記為:T(n)= O(fn))
式中,О 的含義是T(n)的數量級,其嚴格的數學定義是:若T(n)和fn)是定義在正整數集合上的兩個函數,則存在正常數C和n,使得當n≥no時,都滿足0≤T(n)≤Cfn)。
算法的時間復雜度不僅依賴於問題的規模n,也取決於待輸入數據的性質(如輸入數據元素的初始狀態)。例如,在數組A[ 0...n-1]中,查找給定值k的算法大致如下:
該算法中語句3(基本運算)的頻度不僅與問題規模n有關,而且與輸入實例中A的各元素的取值及k的取值有關:
①若A中沒有與k相等的元素,則語句3的頻度f(n)=n。
②若A的最后一個元素等於k,則語句3的頻度(n)是常數0.
最壞時間復雜度是指在最壞情況下,算法的時間復雜度。
平均時間復雜度是指所有可能輸入實例在等概率出現的情況下,算法的期望運行時間。
最好時間復雜度是指在最好情況下,算法的時間復雜度。
一般總是考慮在最壞情況下的時間復雜度,以保證算法的運行時間不會比它更長。
在分析一個程序的時間復雜性時,有以下兩條規則:
常見的漸進時間復雜度: