乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。
一般情況下,演算法的基本操作重複執行的次數是模組n的某乙個函式f(n),因此,演算法的時間複雜度記做:t(n)=o(f(n))。隨著模組n的增大,演算法執行的時間的增長率和f(n)的增長率成正比,所以f(n)越小,演算法的時間複雜度越低,演算法的效率越高。
在計算時間複雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出t(n)的同數量級(它的同數量級有以下:1,log2n ,n ,nlog2n ,n的平方,n的三次方,2的n次方,n!),找出後,f(n)=該數量級,若t(n)/f(n)求極限可得到一常數c,則時間複雜度t(n)=o(f(n))。
定理:若f(n)=amnm +am-1nm-1+…+a1n+a0
是乙個m
次多項式,則
f(n)=o(nm)
eg:以下六種計算演算法時間的多項式是最常用的。其關係為:
o(1) < o(
㏒n) < o(n) < o(n㏒n) < o(n2) < o(n3)
指數時間的關係為:
o(2n) < o(n!) < o(nn)
1:時間複雜度是o(log2n)的計算:
i=1; ①
while (i<=n)
i=i*2; ②
語句1的頻度為1,設語句2的頻度為
f(n),語句2執行時,i值從1,2,4...n,假設次數為f(n),既要得出f(n)與n的關係式,則 2^(f(n)-1)=n => f(n)=log2n+1,則t(n)=1+log2n+1=o(log2n).
2:時間複雜度是o(n^3)的計算:
for(i=0;i① }
語句1的迴圈為n次;當i=w時,語句2的迴圈次數為0+1+2+3+、、、+w=w*(w+1)/2,則當i=n時,語句2的迴圈為n*(n+1)/2;當i=n,j 可以取 0,1,...,n-1 ,則語句4時間頻數為0+1
+(1+2)+(1+2+3)+.......+(1+2+3.......+n)=n(n+1)(n-1)/6
時間複雜度計算
定義 如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式 t n 稱為這一演算法的 時間複雜性 當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的 漸近時間複雜性 我們常用大o表示法表示時間複雜性,注意它是某乙個演算法的時間複雜性。大o表示只是說有上界,由定義如...
時間複雜度計算
1,演算法複雜度是在 資料結構 這門課程的第一章裡出現的,因為它稍微涉及到一些數學問題,所以很多同學感覺很難,加上這個概念也不是那麼具體,更讓許多同學複習起來無從下手,下面我們就這個問題給各位考生進行分析。首先了解一下幾個概念。乙個是時間複雜度,乙個是漸近時間複雜度。前者是某個演算法的時間耗費,它是...
計算時間複雜度
求解演算法的時間複雜度的具體步驟是 找出演算法中的基本語句 演算法中執行次數最多的那條語句就是基本語句,通常是最內層迴圈的迴圈體。計算基本語句的執行次數的數量級 只需計算基本語句執行次數的數量級,這就意味著只要保證基本語句執行次數的函式中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的係數。這樣能...