2代码的执行时间数会有所不同吗?

时间:2013-11-19 10:31:25

标签: c++ code-analysis execution-time

我想知道2段代码会执行多少次。它们都是n次,或者其中一个是n + 1?

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

AND

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

有人帮我吗?

修改 Sınce我收到了这么多,评论不好。我决定真实地提出这个问题。

int sum = 0;
for (int i = 1; i <= n; ++i)
sum = sum + f1(i, n);}

int f1(int x, int n) { 
int sum = 0; 
for (int i = 1; i <= n; i++) 
sum = sum + i; 
return (x + sum); } 

此代码段的确切复杂性为O(n *(n + 1)),我想了解为什么有(n + 1)而不是o(n * n)

2 个答案:

答案 0 :(得分:1)

使用哪一个并不重要,程序输出将是相同的; i++++i不是for循环中的终止条件,而是在每次迭代结束时评估的语句。

但请注意++i永远不会慢于i++;从概念上讲,必须为后者采用对象副本。一个好的编译器会优化副本。

风格点:请缩进sum = sum + i;行;否则很难读。

答案 1 :(得分:0)

我认为代码的代码复杂度是O(n ^ 2)。关于n + 1的复杂循环并不重要。 O(n + 1)= O(n-1)= O(n)所以都是相同的,复杂性可以说是n ^ 2.