问题描述
最近,我遇到了一个名为Strawman算法的函数,其伪代码如下所示:
StrawmanSubarray(A):
Initialize bestsum = A[0]
For left=0 to n-1:
For right = left to n-1:
Compute sum A[left] + . . . + A[right]
If sum > bestsum: bestsum = sum
时间复杂度为Θ(n ^ 3),我不太清楚第三个n从哪里来获得Θ(n ^ 3)?
解决方法
那么,您正在迭代Θ(n ^ 2)次。但是,请注意以下几点:对于每次迭代,您都在执行以下命令: 计算总和A [left] +。 。 。 + A [右] 并且此计算为Θ(n),因此其Θ(n ^ 2)*Θ(n)=Θ(n ^ 3)。