C++ 从数学上讲,这个嵌套循环将运行多少次?

C++ 从数学上讲,这个嵌套循环将运行多少次?,c++,time-complexity,C++,Time Complexity,我试图计算出这个嵌套循环运行的次数,数学上 //Nested Loop (A) for(int i = 1; i <= n; i++) for(int j = 1; j <= i; j++) 但结果是: outer loop's iteration = n inner loop's iteration = (n ( n + 1 ) ) / 2 total iterations = n ( n ( n + 1 ) ) /

我试图计算出这个嵌套循环运行的次数,数学上

//Nested Loop (A)
for(int i = 1; i <= n; i++)
    for(int j = 1; j <= i; j++)
但结果是:

         outer loop's iteration = n
         inner loop's iteration = (n ( n + 1 ) ) / 2

         total iterations = n ( n ( n + 1 ) ) / 2
                          = n ^ 2 ( n + 1 ) / 2      ///< which is WAY MORE than n ( n + 1 ) / 2
外部循环的迭代=n
内部循环的迭代=(n(n+1))/2
总迭代次数=n(n(n+1))/2
=n^2(n+1)/2///<这比n(n+1)/2大得多
在计算总迭代次数时,我做错了什么

-- 谢谢:)

编辑:我已经发布了答案

for(int i = 1; i <= n; i++)
    for(int j = 1; j <= i; j++)
这与总迭代次数相同

无限次

因为j=n在所有情况下都等于1

如果你的意思是j==n,它看起来会像这样

123445 2 3 4 5 3 4 5 4 5 五,

这个函数称为自然数之和5+4+3+2+1=15

这意味着它的时间复杂度将是N(N+1)*2


N(N+1)*25+4+3+2+1=5*6*2=15,我自己想出来的

我使用算术级数和公式来计算它的(内循环)“总”迭代次数,在本例中,它实际上为我提供了嵌套循环的总迭代次数

这两种方法都应提供正确答案:

方法1 使用算术级数和公式简单地计算内部循环的迭代次数

内循环迭代序列及其和为:

1 + 2 + 3 + .... + n = n(n + 1)/2
这将给出嵌套循环的总迭代次数

方法2
for(int i=1;我相信第一个例子是O(n*log(n)),第二个例子是O(n^2)。如果你不确定,为什么不试着编译并运行它呢?@David我没有问大O,但谢谢你的回答。@PaulR谢谢你的回答。显然,我在问这个问题之前编译并运行了它。这就是为什么我知道它应该运行(n)(n+1)/2次。好的-但是如果你在理论与实践的合理化上遇到困难,你可以尝试在测试代码中添加一些调试
cout
s,并确认你的分析是否正确。你的意思是
/2
不是
*2
         1 + 2 + 3 + .... + n = (n(n + 1))/2
         outer loop's iteration = n
         inner loop's iteration = (n ( n + 1 ) ) / 2

         total iterations = n ( n ( n + 1 ) ) / 2
                          = n ^ 2 ( n + 1 ) / 2      ///< which is WAY MORE than n ( n + 1 ) / 2
for(int i = 1; i <= n; i++)
    for(int j = 1; j <= i; j++)
n * (n + 1)/2
1 + 2 + 3 + .... + n = n(n + 1)/2
   for(int i = 1; i <= n; i++) //< This will run 'n' times
   for(int j = 1; j <= i; j++) //< Average = (n + 1)/2