int maxValue = m[0][0];
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (m[i][j] >maxValue)
{
maxValue = m[i][j];
}
}
}
cout<<maxValue<<endl;
int sum = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
sum = sum + m[i][j];
}
}
cout<< sum <<endl;
對於上述代碼我得到O(N 2),作爲執行時間增長 他們方式我得到它是由:大O計算
MAX [O(1),O(N 2), O(1),O(1),O(n2),O(1)]
O(n2)都用於循環。這個計算是否正確?
如果我改變了代碼:
int maxValue = m[0][0];
int sum = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (m[i][j] > maxValue)
{
maxValue = m[i][j];
}
sum += m[i][j];
}
}
cout<<maxValue<<endl;
cout<< sum <<endl;
不過大O是O(n2)的對不對? 那麼這是否意味着Big O只是根據輸入數據大小如何增長時間的指示?而不是如何寫算法?
是的,這是關於作業,我已經做到了這一點,並希望得到一些關於Big-O的更多見解(其實第二個代碼是由我完成的)。如果沒關係,你能否說有可能比可能的執行路徑的數量有更多的Macabe複雜性。因爲這個代碼正在發生。 – sYl3r 2012-04-29 12:08:41