以下程序的运行时间是多少?

时间:2014-09-06 20:56:33

标签: algorithm time-complexity

我书中的练习要求我计算以下for循环的运行时间:

for (int i = 0; i < n; ++i)
    ++k;

这立刻让我想起了总结符号。所以我写下了相应的语法:

enter image description here

这是对的吗?如果没有,为什么不 - 我怎样才能正确计算出来?

2 个答案:

答案 0 :(得分:2)

  

这是对的吗?

没有。它不是。

  

如果没有,为什么不 - 我怎样才能正确计算?

在每次迭代中,

k递增1,即当循环终止时n被添加到它。因此,k = k + 1不等于k = k + k

代码的运行时间为n,因为循环运行n次,++k在循环内的常量时间内完成。

答案 1 :(得分:0)

让我们看一下循环中的操作:

++k;

无论k是什么,该操作都需要一段时间。所以我们用O(1)替换它。

for (int i=0; i<n; ++i)
    O(1)

我们可以看到,我们将在O(1)n次迭代。那就是:

O(n) * O(1)

这显然等于:

O(n)