這是我的第一個問題,我敢肯定,我也會接受我的第一個答案:P運行時間分析,三個內for循環
我必須做的一個算法的漸進分析,從一個數組A[1...n]
計算一個矩陣M[n][n]
其中包含了每種M[i][j]
的值由下式給出:
M[i][j] = (A[i] + ... + A[j])/(j-i+1), if i<=j
和
M[i][j] = 0, if i>j
for i=1 to N do [N]
for j=1 to N do [N]
if(i<=j) [cost]
start=i [cost]
end=j [cost]
sum=0 [cost]
for a=start to end do [??]
sum += A[a] [cost]
M[i][j]=sum/(j-i+1 [cost]
else [cost]
M[i][j]=0 [cost]
考慮,給予前兩個for循環我有期望至少Ø的運行時間(n^2),與第三內的循環,我會得到這樣的O(N * N * [ ??])。 第三for循環執行每次J-i + 1個的操作和僅對於i < = j的。 矩陣將具有,第二的第一個元素等於0,然後計算平均值...
最終矩陣將導致幾乎一半填充(但不是N/2)所以,填充有平均計算的第一行對於第三循環中的值不爲[N/2]
如何可以計算用於最裏面For和也運行時間爲整個算法的運行時間?
對我來說,它仍然看起來像(大約)N/2爲最內圈。 – 2013-03-07 21:39:55
是的,但整個矩陣仍然可以爲O通過消除第三環路建(N^2)的時間(和保持A的運行總和[1] ... A [J])。 – 2013-03-07 21:46:34
在這種情況下,我可以說運行時間是O(N^3)?對於算法分析來說這是一個可以接受的估計? – Daved 2013-03-07 21:48:26