很多時候一眼就能看出程式的時間複雜度,但是遇到複雜的就需要將其過程推導出來,為此總結以下兩種形式
一、迴圈主體中的變數參與迴圈條件的判斷
找出主體語句中與t(n)成 正比的迴圈變數,帶入進行計算,例如:
int i = 1;
while(i <= n)
i = i*2;
其中i*2的次數與t(n)成正比,則2的t(n)次方<= n,則t(n)<=log2n。
二、迴圈主體中的變數與迴圈條件無關
可採用數學歸納法或者直接累計迴圈次數,多層迴圈時從內到外分析,只關注主體語句執行次數。這種情況分為遞迴程式和非遞迴程式
遞迴程式一般使用公式進行遞推,例如:
int fact (int n)
t(n)=1+t(n-1)=1+1+t(n-2)= ...=n-1+t(1)
則t(n)=o(n).
非遞迴程式比較簡單,可以直接累計次數
如何計算程式的時間複雜度
定義 如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式t n 稱為這一演算法的 時間複雜性 當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的 漸近時間複雜性 我們常用大o表示法表示時間複雜性,注意它是某乙個演算法的時間複雜性。大o表示只是說有上界,由定義如果...
時間複雜度計算
定義 如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式 t n 稱為這一演算法的 時間複雜性 當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的 漸近時間複雜性 我們常用大o表示法表示時間複雜性,注意它是某乙個演算法的時間複雜性。大o表示只是說有上界,由定義如...
時間複雜度計算
1,演算法複雜度是在 資料結構 這門課程的第一章裡出現的,因為它稍微涉及到一些數學問題,所以很多同學感覺很難,加上這個概念也不是那麼具體,更讓許多同學複習起來無從下手,下面我們就這個問題給各位考生進行分析。首先了解一下幾個概念。乙個是時間複雜度,乙個是漸近時間複雜度。前者是某個演算法的時間耗費,它是...