Time 如何计算此算法的时间复杂度?

Time 如何计算此算法的时间复杂度?,time,complexity-theory,Time,Complexity Theory,我一直在试图计算这个算法的时间复杂度,但我认为我是不对的 因为它不可能是n^2,所以我提出了一个O(n*(j*(1+j)*50)的公式,但我还是不够肯定 for (int i = 1; i <= n; i++) for (int j = 1; j <= i ; j++) for (int k = 1; k <= 100; k++) cout << "Hello"; for(inti=1;i这确实是O(n²)内部循环以恒

我一直在试图计算这个算法的时间复杂度,但我认为我是不对的

因为它不可能是n^2,所以我提出了一个O(n*(j*(1+j)*50)的公式,但我还是不够肯定

for (int i = 1; i <= n; i++)
    for (int j = 1; j <= i ; j++)
        for (int k = 1; k <= 100; k++)
           cout << "Hello";
for(inti=1;i这确实是
O(n²)
内部循环以恒定时间运行。它与


for(inti=1;iNo),但内部循环运行的次数取决于
i
,即
O(n)
。因此,您有
O(n)
O(n)
,这将为您提供
O(n²)
。复杂性分析就是这样工作的。如果你必须的话,自己检查一下。写下这个函数运行的步数并绘制图表。这是
O(n²)
。注意O(50n(n+1))=O(n^2)。@AbdelAziz O(f(n))是一组在f(n)之上渐近有界的函数。任何在50n(n+1)之上渐近有界的函数也由n^2对称地限定,反之亦然。
O(50n·(n+1))
=
O(n·(n+1))
=
O(n²+n)
=
O(n²)+O(n)
=
O(n²)
T(n) = 1 + 2 + 3 + ... + n
     = n * n(1 + n)/2
     = (n² + n)/2