计算嵌套for循环的成本

时间:2016-01-13 14:13:08

标签: algorithm

我试图根据n的函数来计算以下算法的成本。

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

我理解内部for循环将迭代(n-1)+(n-2)+ ....(n-n)次,但是我不知道如何以更简单的形式在数学上表达它。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

(n-1) + (n-2) + .... (n-n)等于从0到N-1的所有整数之和。所以它等于N-1th triangular number,可以用公式

找到
Tn = n * (n+1) / 2

相当于(1/2)* n ^ 2 +(1/2)* n。

在计算Big O复杂度时,您丢弃常量乘数和除增长最快的组件之外的所有组件,因此执行(1/2)*n^2 + (1/2)*n步骤的算法在O(n ^ 2)时间内运行。

答案 1 :(得分:0)

内环平均迭代(≈½n)次。 在“大O”符号中,您只关心最大的因素。 也就是说,例如,如果你有:

n³+ n + log(n)+ 1234

然后唯一重要的是n³因子,所以O(n³)。

所以在你的情况下:

½nxn =½n²

是O(n²),因为½并不重要。