評估算法時間複雜度的具體步驟是:算法
(1)找出算法中重複執行次數最多的語句的頻度來估算算法的時間複雜度;函數
(2)保留算法的最高次冪,忽略全部低次冪和高次冪的係數;spa
(3)將算法執行次數的數量級放入大Ο記號中排序
在程序段(a)中,語句x=x+1不在任何一個循環體內,則它的時間頻度爲1,其執行時間是個常量;而(b)中,同一語句被重複執行n次,其時間頻度爲n;顯然在(c)中,該語句的頻度爲n^2。由此,這三個程序段的時間複雜度爲O(1)、O(n)、O(n^2)。分別爲常量、線性階和平方階。class
對於較爲複雜的算法,能夠將它們分割成容易估算的幾個部分,而後利用O的求和原則獲得整個算法的時間複雜度。例如,若算法的兩個部分的時間複雜度分別爲T1(n)=O(f(n))和T2(n)=O(g(n)),則總的時間複雜度爲:循環
T(n)= T1(n)+ T2(n)=O(max(f(n), g(n)))程序
然而,不少算法的運行時間不只依賴於問題的規模,也與處理的數據集有關。例如,有的排序算法對某些原始數據(如自小至大有序),則其時間複雜度爲O(n),而對另外一些數據可達O(n^2)。所以,在估算算法的時間複雜度時,均以數據集中最壞的狀況來估算。數據
文章小結時間
評估算法時間複雜度的要點是:若是一個算法的執行次數是 T(n),那麼只保留最高次項,同時忽略最高項的係數後獲得函數 f(n),此時算法的時間複雜度就是 O(f(n))。co