註明出處:部落格原文
這一段很清晰的說明了時間複雜性的計算,已註明出處。
下面分別對幾個常見的時間複雜度進行示例說明:
(1)、o(1)
temp=i; i=j; j=temp;
以上三條單個語句的頻度均為1,該程式段的執行時間是乙個與問題規模n無關的常數。演算法的時間複雜度為常數階,記作t(n)=o(1)。注意:如果演算法的執行時間不隨著問題規模n的增加而增長,即使演算法中有上千條語句,其執行時間也不過是乙個較大的常數。此類演算法的時間複雜度是o(1)。
(2)、o(n2)
2.1. 交換i和j的內容
sum=0; (一次)
for(i=1;i<=n;i++) (n+1次)
for(j=1;j<=n;j++) (n2次)
sum++; (n2次)
解:因為θ(2n2+n+1)=n2(θ即:去低階項,去掉常數項,去掉高階項的常參得到),所以t(n)= =o(n2);
2.2.
for (i=1;i解: 語句1的頻度是n-1
語句2的頻度是(n-1)*(2n+1)=2n2-n-1
f(n)=2n2-n-1+(n-1)=2n2-2;
又θ(2n2-2)=n2
該程式的時間複雜度t(n)=o(n2).
一般情況下,對步進迴圈語句只需考慮迴圈體中語句的執行次數,忽略該語句中步長加1、終值判別、控制轉移等成分,當有若干個迴圈語句時,演算法的時間複雜度是由巢狀層數最多的迴圈語句中最內層語句的頻度f(n)決定的。
(3)、o(n)
a=0;
b=1; ①
for (i=1;i<=n;i++) ②
解: 語句1的頻度:2,
語句2的頻度: n,
語句3的頻度: n-1,
語句4的頻度:n-1,
語句5的頻度:n-1,
t(n)=2+n+3(n-1)=4n-1=o(n).
(4)、o(log2n)
i=1; ①
hile (i<=n)
i=i*2; ②
解: 語句1的頻度是1,
設語句2的頻度是f(n), 則:2^f(n)<=n;f(n)<=log2n
取最大值f(n)=log2n,
t(n)=o(log2n )
(5)、o(n3)
for(i=0;i解:當i=m, j=k的時候,內層迴圈的次數為k當i=m時, j 可以取 0,1,…,m-1 , 所以這裡最內迴圈共進行了0+1+…+m-1=(m-1)m/2次所以,i從0取到n, 則迴圈共進行了: 0+(1-1)*1/2+…+(n-1)n/2=n(n+1)(n-1)/6所以時間複雜度為o(n3).
排序演算法複雜性
穩定排序與不穩定排序 假設 ki kj 且排序前序列中 ri 領先於 rj 若在排序後的序列中 ri 仍領先於 rj 則稱排序方法是穩定的。若在排序後的序列中 rj 仍領先於 ri 則稱排序方法是不穩定的。演算法的複雜性 體現在執行該演算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間 ...
演算法 演算法複雜性分析
演算法分析是對乙個演算法需要多少計算時間和儲存空間作定量分析。此文主要介紹如何使用漸近分析記號來表示演算法的時間複雜度以及如何對演算法效率進行比較。輸入規模度量 執行時間的度量單位 演算法的最優 最差和平均效率 小規模輸入在執行時間上的差別不足以將高效演算法和低效演算法區分開來。乙個需要指數級操作次...
簡化根本複雜性,消除偶發複雜性
根本複雜性 essential complexity 指的是問題與生俱來的,無法避免的困難。比如,協調全國的空中交通就是乙個 天生的 複雜問題,必須實時跟蹤每架飛機的位置 包括飛行高度 航速 航向和目的地,才能預防空中和地面上的衝突。像天氣驟變這樣的情況會令航班計畫全盤失效,航班時刻表必須適應不斷變...