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

时间:2019-09-13 19:39:50

标签: 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";

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

这确实是O(n²)。内循环以恒定的时间运行。与

相同
for(int i = 1;i<=n;i++)
  for(int j = 1;j<=i;j++) {
      cout << "Hello";
      cout << "Hello";
      cout << "Hello";
      cout << "Hello";
      /* repeats 96 mores times */
  }

更具体地说,您可以将步数计算为

T(n) = 1 + 2 + 3 + ... + n
     = n * n(1 + n)/2
     = (n² + n)/2

常量无关紧要,因此此功能在O(n² + n)(简称为O(n²))中增长。

您可以将所有内容乘以100,而不是展开内部循环,但这不会改变复杂性。