我一直在尝试计算该算法的时间复杂度,但我认为我不对。
由于不能为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";
任何帮助将不胜感激。
答案 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,而不是展开内部循环,但这不会改变复杂性。