给定代码段的时间复杂度是多少?

时间:2016-11-26 15:29:11

标签: algorithm time-complexity

for i = 1 to n do
   for j = 1 to i do
       for k = 1 to j do

根据' n'

,它的时间复杂程度如何?

1 个答案:

答案 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)

注意:这仅计算最内部块中的操作。它忽略了执行循环所需的操作。但如果你包括那些,你会发现时间复杂度是相同的。