2014-09-06 68 views
0

在我的书的行使要我计算循环下的运行时间:以下程序的运行时间是多少?

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

这立刻让我想起了求和符号的。于是,我写下了适当的语法:

enter image description here

这是正确的吗?如果没有,为什么不 - 我如何正确计算它?

+0

所有你在这里做计数。如果我理解你的练习陈述,那么它与测量时间有关。为此,您需要使用高精度时钟功能。 – Logicrat 2014-09-06 20:58:25

回答

0

让我们看看循环内的操作:

++k; 

不管是什么k是,该操作将需要一定的时间。所以让我们用O(1)替换它。

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

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

O(n) * O(1) 

其中明确等于:

O(n) 
+0

在我所关注的书中,我们没有使用'O'语法。我们打破代表代码的方程式。所以在这种情况下,它就像我的问题中的总结符号。 – 2014-09-06 21:02:49

+0

也许你的书正在寻找'\ sum_ {i = 1}^{n} 1'?但我只能帮助我知道的符号。如果你想阅读这个符号,[这里是维基百科链接](https://en.wikipedia.org/wiki/Big_O_notation)。 – 2014-09-06 21:04:23

+0

您的代码正在求和'1 + 1 + 1 + ...''n'次。我的代码添加了'k + 1 + 1 ...' - 'k'不保证从'1'开始。 – 2014-09-06 21:07:11

2

这是正确的吗?

不是。

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

k1在每个迭代递增的,即当循环终止n被添加到它。因此,k = k + 1不等于k = k + k

运行代码的时间顺序n因为循环运行n倍,++k在循环内恒定的时间内完成。

相关问题