嵌套for循环的运行时是O(n ^ 2)?

时间:2017-07-19 19:27:29

标签: runtime big-o

我有这些嵌套循环

int sum = 0;
for (int n = N; n > 0; n = n/2) {
   for (int i = 0; i < n; i++) {
      sum++;
   }
}

外环让我失望了一点。 运行时仍然是O(n ^ 2)还是其他东西?

1 个答案:

答案 0 :(得分:2)

这里内循环执行1 + 2 + ... + n / 2 + n次。 它在这个序列中有lg n个项,这意味着int i = 0执行lg n次,

内循环中语句的总和是2n。 所以我们得到O(n + lg n)= O(n)