for i = 1 to n do
for j = 1 to i do
for k = 1 to j do
根据' n'
,它的时间复杂程度如何?答案 0 :(得分:1)
最里面的循环显然会运行j
次。假设它包含值1个时间单位的操作,则为:
T_inner(j) = j
中间循环将运行i
次,即
T_middle(i) = Sum {j from 1 to i} T_inner(j)
= Sum {j from 1 to i} j
= i/2 * (1 + i)
最后:
T_outer(n) = Sum {i from 1 to n} T_middle(i)
= Sum {i from 1 to n} (i/2 * (1 + i))
= 1/6 * n * (1 + n) * (2 + n)
= 1/6 n^3 + 1/2 n^2 + 1/3 n
这显然是O(n^3)
。
注意:这仅计算最内部块中的操作。它忽略了执行循环所需的操作。但如果你包括那些,你会发现时间复杂度是相同的。