我有以下伪代码:
for i=1 to 3*n
for j=1 to i*i
for k=1 to j
if j mod i=1 then
s=s+1
endif
next k
next j
next i
当我想分析执行部分s = s + 1的次数时,假设此操作需要恒定时间,我最终得到二次复杂度或者是线性的吗? n的值可以是任何正整数。
我所做的计算如下:
答案 0 :(得分:0)
绝对不是二次方,但至少应该是多项式。
经历3n次迭代。
在每次迭代时,它会更多地进行9n 2 。
在每一项上,它最多可以达到9n 2 。
所以我认为这将是O(n 5 )。
答案 1 :(得分:0)
在谈论运行时间时,您应该始终明确说明您的运行时间。
如果我们假设您在讨论n的运行时间,答案是O(n^5)
。这是因为当我们摆脱常数因素时,你所做的就归结为此:
do n times:
do n^2 times:
do n^2 times:
do something
n * n^2 * n^2 = n^5