程式的時間複雜度計算

2021-08-04 11:29:10 字數 500 閱讀 7502

很多時候一眼就能看出程式的時間複雜度,但是遇到複雜的就需要將其過程推導出來,為此總結以下兩種形式

一、迴圈主體中的變數參與迴圈條件的判斷

找出主體語句中與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,演算法複雜度是在 資料結構 這門課程的第一章裡出現的,因為它稍微涉及到一些數學問題,所以很多同學感覺很難,加上這個概念也不是那麼具體,更讓許多同學複習起來無從下手,下面我們就這個問題給各位考生進行分析。首先了解一下幾個概念。乙個是時間複雜度,乙個是漸近時間複雜度。前者是某個演算法的時間耗費,它是...