public int Loop(int[] array1) {
int result = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1.length; j++) {
for (int k = 1; k < array1.length; k = k * 2) {
result += j * j * array1[k] + array1[i] + array1[j];
}
}
}
return result;
}
我試圖找到計算這裏的算術運算次數的複雜度函數。我知道複雜類將是O(n^3),但我在計算步驟時遇到了一些問題。3個嵌套for循環的大O?
我的推理到目前爲止,我算的算術運算的數量是8,複雜度函數也是8n^3?
任何正確的方向指導將非常感謝,謝謝!
你確定複雜度是'O(n^3)'嗎?我的意思是,它肯定會在'O(n^3)'中,就像'O(n!)'一樣,但這不是最緊密的。 –
嗯,我的意思是我們在課堂上教過的方法是統計步數(算術運算),然後計算每次操作需要完成多少次,這就是我如何得出O(n^3)。我絕對可能是錯的。我也遵循了2個嵌套for循環的邏輯通常是我迄今爲止所做的O(n^2)。 – ellaaur
仔細考慮最內層的'ForUpdate'中的'k = k * 2'。 –