我有以下問題。 給波浪線逼近陣列的數量爲以下代碼訪問有多少陣列訪問以下
for (int i=0; i < n; ++i)
for (int j = i/2; j < i; ++j)
A[i] = B[j] + C[j];
但是,我無法弄清楚到底有多少數組訪問有,在N
而言,我想答案會n^3
- n,用於A和n^2兩種B和C.
我似乎是在右邊粘性?
我有以下問題。 給波浪線逼近陣列的數量爲以下代碼訪問有多少陣列訪問以下
for (int i=0; i < n; ++i)
for (int j = i/2; j < i; ++j)
A[i] = B[j] + C[j];
但是,我無法弄清楚到底有多少數組訪問有,在N
而言,我想答案會n^3
- n,用於A和n^2兩種B和C.
我似乎是在右邊粘性?
的N階爲大O符號N^2。
這是由於2嵌套for循環。
否,則不能指望這樣的
你的數組A []被訪問次數與B []和C []相同,唯一的區別是A在i
位置訪問j
次。
和其他的東西,是不是N3,你不能做次B,你應該分析這兩種for`s計算複雜
所以,首先爲執行n
次,第二個用於執行n/2
倍
在這種情況下,你有O(nˆ2/4)
或只是O(nˆ2)
OH好是有道理其實,我不明白這一點的唯一的事情就是你去'爲O(n^2/4)'應該不會是' O(n^2/2)'? – jroy8
發生這種情況是因爲你正在使用自然數,例如,對於n = 1和n = 2。在第二個循環中有1個交互作用。因此,一半的交互作用是相同的。在這種情況下(N * N/2)/ 2 –
因此,有N^2數組訪問你在說什麼? – jroy8