所以我剛開始學習時間複雜度,我對它有一些「好的」把握,但是我對如何處理這段代碼有點困惑。 我已閱讀其他帖子,但我只是很難抓住的東西,除非有人屠夫我不得不說。有點像一巴掌。時間複雜度:while循環嵌套for循環[java]
public int example(int[] array) {
int result = 15;
int i = array.length;
while(i > 1)
{
for(int x = 0; x < array.length;x++)
{
result+= 1;
result+=2*array[x];
}
i = i/2;
}
return result;
}
好吧,所以我只計算算術運算。 從我相信,糾正我,如果我錯了(可能是),
x ++發生n次。
結果+ = 1發生n次。
結果+ = 3 *陣列[X]發生2n倍
所有總共4N倍
和I = I/2發生LOGN倍
那麼正確的方程將是4nlogn ??
爲什麼你認爲循環中的第二條語句執行的次數是前一次的兩倍? – ChiefTwoPencils
我假設是因爲2個算術運算正在發生,但我想它只發生n次? – CabDude
我現在看到你的邏輯了。 – ChiefTwoPencils