function alg1(n)
1 a=0
2 for o=1 to n do
3 for t=1 to o do
4 for k=t to o+t do
5 a=a+1
6 return(a)
如果有人能指导我如何在这里找到最坏情况,以及如何将alg1的输出作为n的函数,我将非常感激。谢谢!
答案 0 :(得分:3)
我们可以计算此代码执行的确切增量数。首先,让我们替换
for k=t to o+t do
带
for k=1 to o+1 do
在此更改之后,两个内部循环看起来像这样
for t=1 to o do
for k=1 to o+1 do
这些循环的迭代次数显然是o*(o+1)
。迭代的总数可以通过以下方式计算:
当使用big-O表示法时,我们可以排除多项式的系数和低阶项。因此,复杂度 O(n ^ 3)。
答案 1 :(得分:1)
从最后一个循环中减去t,使其变为
for k=0 to o do
现在,对于o的每个值,2个最内部循环将运行O(o ^ 2)时间。答案是
1^2 + 2^2 + ... n^2
等于
N(N + 1)(2N + 1)/ 6。因此它将是O(n ^ 3)
的阶数