何謂語句的頻度
先看看語句頻度和數據結構中時間復雜度的區別。
1)時間頻度一個算法執行所耗費的時間,從理論上是不能算出來的,必須上機運行測試才能知道。但我們不可能也沒有必要對每個算法都上機測試,只需知道哪個算法花費的時間多,哪個算法花費的時間少就可以了。并且一個算法花費的時間與算法中語句的執行次數成正比例,哪個算法中語句執行次數多,它花費時間就多。一個算法中的語句執行次數稱為語句頻度或時間頻度。記為T(n)。(2)時間復雜度在剛才提到的時間頻度中,n稱為問題的規模,當n不斷變化時,時間頻度T(n)也會不斷變化。但有時我們想知道它變化時呈現什么規律。為此,我們引入時間復雜度概念。一般情況下,算法中基本操作重復執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),使得當n趨近于無窮大時,T(n)/f(n)的極限值為不等于零的常數,則稱f(n)是T(n)的同數量級函數。記作T(n)=O(f(n)),稱O(f(n)) 為算法的漸進時間復雜度,簡稱時間復雜度。在各種不同算法中,若算法中語句執行次數為一個常數,則時間復雜度為O(1),另外,在時間頻度不相同時,時間復雜度有可能相同,如T(n)=n2 3n 4與T(n)=4n2 2n 1它們的頻度不同,但時間復雜度相同,都為O(n2)。按數量級遞增排列,常見的時間復雜度有:常數階O(1),對數階O(log2n),線性階O(n),線性對數階O(nlog2n),平方階O(n2),立方階O(n3),。,k次方階O(nk),指數階O(2n)。隨著問題規模n的不斷增大,上述時間復雜度不斷增大,算法的執行效率越低。
所以語句的頻度應該是語句總數/運行時間
單位:次/單位時間。
我只清楚漸進復雜度,這個語句頻度還真沒聽說過,希望我沒有搞錯。
求個語句的頻度
i=1
j=1 to 1
j=1
k=1 to 1
k=1
i=2
j=1 to 2
j=1
k=1 to 1
k=1
j=2
k=1 to 2
k=1
k=2
i=3
j=1 to 3
j=1
k=1 to 1
k=1
j=2
k=1 to 2
k=1
k=2
j=3
k=1 to 3
k=1
k=2
k=3
i=4
j=1 to 4
j=1
k=1 to 1
k=1
j=2
k=1 to 2
k=1
k=2
j=3
k=1 to 3
k=1
k=2
k=3
j=4
k=1 to 4
k=1
k=2
k=3
k=4
i=5
j=1 to 5
j=1
k=1 to 1
k=1
j=2
k=1 to 2
k=1
k=2
j=3
k=1 to 3
k=1
k=2
k=3
j=4
k=1 to 4
k=1
k=2
k=3
k=4
j=5
k=1 to 5
k=1
k=2
k=3
k=4
k=5
i=n
j=1 to n
j=1
j=1
k=1 to 1
k=1
j=2
k=1 to 2
k=1
k=2
j=3
k=1 to 3
k=1
k=2
k=3
j=4
k=1 to 4
k=1
k=2
k=3
k=4
j=5
k=1 to 5
k=1
k=2
k=3
k=4
k=5
j=。
f(n)=1+2+3+。+(n-1)+n=(n+1)*n/2=f(n-1)+n (n>=1,且n為整數)
=0 (n=0時)
f(1)+f(2)+f(3)+f(4)+f(5)+。+f(n)=1+3+6+10+15+。+f(n)=[n*(n+1)*(2n+1)/6+n*(n+1)/2]/2=(n^3+3n^2+2n)/6
所以@行的頻度為(n^3+3n^2+2n)/6
希望回答對你有幫助。