Time 如何计算此算法的时间复杂度?
我一直在试图计算这个算法的时间复杂度,但我认为我是不对的 因为它不可能是n^2,所以我提出了一个O(n*(j*(1+j)*50)的公式,但我还是不够肯定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²)内部循环以恒
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