嵌套几何序列的复杂性

时间:2015-06-19 10:28:14

标签: algorithm big-o time-complexity analysis

下面的代码实际上是以O(n ^ 2)为界,有人可以解释一下原因吗?

{{1}}

3 个答案:

答案 0 :(得分:4)

这并不是那么棘手。

你的内循环的复杂性形成一个geometric progression,其总复杂度 O(n)

一直没有填写细节(这看起来像是一个硬件问题),请注意几何序列的公式是

a_0(q ^ k - 1)/ q - 1 ,( a_0 =第一个元素, q =乘法因子, k = num elements)。

这里你的 q ^ k O(n)

你的外环是 O(n)

由于它是一个嵌套循环,并且内部术语不依赖于外部索引,因此可以相乘。

答案 1 :(得分:0)

证明是几何级数:)

  1. 对于i = n,如果i> 1,内部循环不会执行多次n / 3(因为在下一次迭代中j是> = n)。

  2. 因此,对于外循环的2n / 3次迭代,内循环仅迭代一次并执行O(j)操作。因此,对于2n / 3次迭代,复杂度为O(n ^ 2)。

  3. 要计算设置n = n / 3的剩余迭代的复杂度,现在应用步骤1,2和3

答案 2 :(得分:0)

有条不紊地使用Sigma表示法,您可以执行以下操作:

enter image description here