2016-01-13 133 views
1

我想根据n的函数来计算以下算法的成本。计算嵌套for循环的代价

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

据我所知,内部的for循环将迭代(N-1)+(N-2)+ ...(NN)次,但我不知道如何在数学表达这个更简单的形式。我怎样才能做到这一点 ?

回答

3

(n-1) + (n-2) + .... (n-n)等于从0到N-1的所有整数之和。因此,它是等于第N-1 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)时间内运行。

0

内部循环平均迭代次数为(≈½ n)次。 在“大O”表示法中,您只关心最大的因素。 也就是说,例如,如果您有:

ñ³ + N +的log(n)+ 1234

那么唯一重要的事情是n ³因素,因此为O(n ³)。

所以你的情况:

½ N×n个=½ N ²

这是O(n ²),因为½没关系。