【发布时间】:2013-03-02 16:14:04
【问题描述】:
好的,我正在上算法课,并且正在准备考试... 不幸的是..我无法理解嵌套循环时间分析背后的概念
这段代码中有三个循环
for (i=1->n)
for (j=1->i)
for (k=1->i)
x=x+1;
我不明白如何找出答案:s 任何答案都会有很大帮助 谢谢大家:)
【问题讨论】:
标签: algorithm time-complexity nested-loops
好的,我正在上算法课,并且正在准备考试... 不幸的是..我无法理解嵌套循环时间分析背后的概念
这段代码中有三个循环
for (i=1->n)
for (j=1->i)
for (k=1->i)
x=x+1;
我不明白如何找出答案:s 任何答案都会有很大帮助 谢谢大家:)
【问题讨论】:
标签: algorithm time-complexity nested-loops
您需要总结循环,它只是需要计算的多个 sigma:
inner sigma 中的 1 是您在最内层循环中所做的事情的复杂性。
【讨论】:
i=1 时,k-loop 运行 1 次,j-loop 运行 1 次。总计=1.1=1 次
当i=2 时,k-loop 运行 2 次,j-loop 运行 2 次。总计=2.2=4 次
当i=3 时,k-loop 运行 3 次,j-loop 运行 3 次。总计=3.3=9 次
当i=n 时,k-loop 运行 n 次,j-loop 运行 n 次。总计=n.n=n^2次
所以,算法的时间复杂度为 O(1+2^2+3^2+...n^2)=O(n(n+1)(2n+1)/6) =O(n ^3)
【讨论】: