我知道有很多关于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)= N - 但是当N乘以多次时,它只是我对和变量的观测值的直觉 - 总和几乎等于2N,这给了我们N.
基本上我不知道如何计算它。请帮助我完成这项任务并解释解决方案 - 这对我来说非常重要。
由于
答案 0 :(得分:0)
内循环迭代最后一次max。 N.在最后一次运行之前,它迭代N / 2。如果总结一下N + N / 2 + N / 4 + N / 8这加起来为2 * N.这就是你计算所有跑步的全部内容。 T(N)= N