Big Oh表記について同様の質問がたくさんあることは知っていますが、この例は非常に興味深く、些細なことではありません。
int sum = 0;
for (int i = 1; i <= N; i = i*2)
for (int j = 0; j < i; j++)
sum++;
外側のループはlg(N)回繰り返されますが、内側のループはどうでしょうか。そして、すべての操作のT(N)は何ですか?私は3つの可能性しか見ることができません:
- T(N)= lg(N)* 2 ^ N
- T(N)= log(N)*(N-1)
- T(N)= N
私の意見-T(N)= N-しかし、これは、Nを何度も乗算したときの合計変数の観測値からの私の直感です-合計はほぼ2Nに等しく、Nが得られます。
基本的に私はそれを数える方法を知りません。このタスクを手伝って、解決策を説明してください-それは私にとって非常に重要です。
ありがとう