私は coursera でアルゴリズムのコースを受講していますが、この特定の問題で立ち往生しています。このコードの時間計算量を見つけることになっています。
int sum = 0
for (int i = 1; i <= N*N; i = i*2)
{
for (int j = 0; j < i; j++)
sum++;
}
私は日食自体でそれをチェックしました. N の任意の値に対して、合計ステートメントが実行される回数は N 未満です
final value of sum:
for N=8 sum=3
for N=16 sum=7
for N=100000 sum=511
したがって、時間計算量は N 未満である必要がありますが、与えられた答えは N の 2 乗です。どうしてそれが可能なのでしょうか?
私がこれまでに行ったこと:
最初のループは log(N^ 2) 回実行され、その結果、2 番目のループは 1,2,3.. 2 logN を実行します。