O(。)以下算法的运行时间

时间:2014-10-08 09:20:22

标签: algorithm

以下算法(psuedocode表单)的bigOh运行时间是什么:

for i = 1,2,...,n do

  for j = i+1, i+2, ... n do 

    Add up array entries A[i] through A[j]

    Store the result in B[i,j]

  end for

end for

自己计算我认为嵌套的for循环会导致O(n ^ 2)的最坏情况,但我不确定添加和存储最坏情况的复杂性。

由于

1 个答案:

答案 0 :(得分:1)

i上的循环是n次迭代 j上的循环平均接近n / 2次迭代 A[k]的总和平均超过n / 3项

因此你需要大约(n ^ 3)/ 6个加法。那是O(n ^ 3)。

但是如果你在j的循环中保持A [i] + ... + A [j]的总计,或者使用先前计算的B[i,j]值,你可以带它降至O(n ^ 2)。

j上的循环使用n-1次迭代并且下降到0.并且n个连续数的平均值是2个极值的平均值,即(n-1 + 0)/ 2。差不多是n / 2.

总和的长度更难以解释。它是一个加权平均值,对小数字的权重大于大数字。结果因子1/3无论如何都不重要。