我试图根据n的函数来计算以下算法的成本。
for i:= 1 to n do
for j:= i to n do
k:=0
我理解内部for循环将迭代(n-1)+(n-2)+ ....(n-n)次,但是我不知道如何以更简单的形式在数学上表达它。我怎么能这样做?
答案 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²),因为½并不重要。