有人可以帮我解决这个伪代码的时间复杂度分析吗? 我在这里寻找最坏情况的复杂性,我无法弄清楚它是否是O(n ^ 4),O(n ^ 5)或其他完全不同的东西。如果您可以详细了解如何完全解决它,那将非常感激。
sum = 0
for i = 1 to n do
for j = 1 to i*i do
if j mod i == 0 then
for k = 1 to j do
sum = sum + 1
答案 0 :(得分:1)
第一个循环:O(n)
第二次循环:i
平均为n/2
,你可以有一个确切的公式,但它是O(n²)
第三个循环在第二个循环中发生i
次,因此平均n/2
次。它也是O(n²)
,估计它。
所以它是O(n*n²*(1 + 1/n*n²))
,我说O(n^4)
。 1/n
来自第三个循环在第二个循环内发生大约1/n
次的事实。
这完全是一个球场估计,没有严格的证据,但它应该是正确的。您可以通过自己运行代码来确认它。