算法是这样的:
def online_variance(data):
n = 0
mean = 0
M2 = 0
for x in data:
n = n + 1
delta = x - mean
mean = mean + delta/n
M2 = M2 + delta*(x - mean)
if (n < 2):
return 0
variance = M2/(n - 1)
return variance
取自Wikipedia。
问题是这个算法的时间复杂度是多少?我的答案是O(N),但似乎太容易了。我错过了什么吗?也许这些分歧也应该考虑在内?
答案 0 :(得分:2)
你是对的,复杂性是O(n)。 for循环中的语句以恒定时间执行,并执行n次(其中n是数据中元素的数量)。