计算嵌套for循环中的迭代次数

时间:2016-02-10 14:16:23

标签: loops for-loop iteration big-o counting

这是伪代码:

for i=1 to n
   for j=1 to n
     for k=1 to j
       x = x+1

我必须计算这两件事(i)精确计算(ii)找到它-O

在(i)中,我的最终答案是n ^ 4 + 2n ^ 3 + 5n ^ 2 + 4n + 2。 在(ii)中,因为有三个循环,所以它是O(n ^ 3);

似乎必须有(i)或(ii)错误,因为(i)升至4,而大O只是3。

这是我计算迭代时的步骤:

for(i=1; i <=n; i++)

计为1+(n + 1)+ n,即(2n + 2)。

所以,(2n + 2)+ n(2n + 2)+ n(4 + 6 + 8 + ... + 2n + 2)+ n ^ 2(1 + 2 + 3 + ... + n )(2) 最后得出n ^ 4(见最后一项,AS * n的总和)。

1 个答案:

答案 0 :(得分:0)

对于像这样的嵌套循环计算内循环的迭代次数,Sigma表示法是一种方便的工具

enter image description here

由于我们通过相等来计算内部循环的迭代次数(即,确切地说,没有不等式),我们可以为算法的渐近行为声明更强的big-Θ属性。这是假设我们将"sort": [ "_doc" ] 定义为算法的基本操作(这里适用)。

对于您的算法---说x = x + 1 ---自然T分别表示上下渐近边界,T ∈ Θ(n^3)T ∈ O(n^3)