【发布时间】:2018-09-13 01:40:06
【问题描述】:
鉴于以下伪代码,我想知道在尝试确定时间复杂度时我的思维过程是否正确。
for i = 0 to n-1
Add the numbers A[0] thru A[i].
Store the result in B[i].
该算法将循环 n 次,并且由于最后一次迭代将需要最多的计算量(n 次计算),该算法将总共进行 n^2 + f(n) 次计算。其中f(n) 是次数为n^2 的多项式 或更少。 因此该算法是二次的O(n^2)。
【问题讨论】:
-
但是
B[i] = B[i-1]+a[i],没有理智的实现会在每次迭代中重复整个部分求和。您的算法可能是O(n^2),但前缀求和不是。 -
这不应该是理智的,这只是时间复杂度的练习。
标签: algorithm time-complexity computer-science prefix-sum