有趣的嵌套循环的大哦 - 如何计算它?

时间:2013-02-13 21:55:25

标签: loops big-o nested-loops

我知道有很多关于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)= 1g(N)* 2 ^ N
  • T(N)= log(N)*(N-1)
  • T(N)= N

我的观点 - T(N)= N - 但是当N乘以多次时,它只是我对和变量的观测值的直觉 - 总和几乎等于2N,这给了我们N.

基本上我不知道如何计算它。请帮助我完成这项任务并解释解决方案 - 这对我来说非常重要。

由于

1 个答案:

答案 0 :(得分:0)

内循环迭代最后一次max。 N.在最后一次运行之前,它迭代N / 2。如果总结一下N + N / 2 + N / 4 + N / 8这加起来为2 * N.这就是你计算所有跑步的全部内容。 T(N)= N