algorithm - Knuth 方差算法的复杂性

标签 algorithm complexity-theory time-complexity asymptotic-complexity

算法是这样的:

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),但这似乎太简单了。我错过了什么吗?也许还应该考虑这些部门?

最佳答案

你是对的,复杂度是 O(n)。 for循环中的语句以恒定时间执行,执行n次(其中n是data中元素的个数)。

关于algorithm - Knuth 方差算法的复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25997873/

相关文章:

c++ - Sieve of Eratosthenes 算法的效率

algorithm - Deutsch-Jozsa 算法

c++ - 如何生成用于测试快速排序最佳案例的数组?

algorithm - 如何找到算法的时间复杂度?

arrays - Data.Array 有多快?

javascript - 寻找所有可能和的时间复杂度

java - 使用快速排序对数组进行分区的运行时分析

python - 将 ascii 编码转换为 int 并在 python 中再次返回(快速)

algorithm - 通过改变大小增加动态数组时的分摊运行时间

algorithm - 当元素数量不同时嵌套 for 循环复杂度