如你所见,我对所有这些运行时分析还很陌生,我想确保我计算的每一步都是正确的。。
我也不喜欢用伪代码的形式写,所以我用Python来代替来了

def mean(n):
    sum = 0               #cost = 1
    for i in n:           #cost = n
        sum += i          #cost = n
    return sum/len(n)     #cost = 1

因此,平均值的总运行时间(如果im错误,请更正me)=O(1)+O(n)+O(n)+O(1)=O(n)
def variance(n):
    var = 0                    #cost = 1
    for i in n:                #cost = n
        var += (i-mean(n))**2  #cost = n*n or n+n ??
    return var / len(n)        #cost = 1

问题是方差的总运行时间是多少你能把所有的工作都展示出来吗?

最佳答案

o(n^2),因为您正在执行o(n)操作n次。
一般来说,在确定运行时,循环是乘法的;如果方差循环是“for i i n lg(n)”,那么运行时将是O(n*lg(n)),因为您将执行O(n)操作lg(n)次;同样,如果内部操作是O(2^n),外部循环是“for i In n”,那么运行时将是O(n*2^n)
另一种常见的循环格式是

for(int i = 0; i < N; i++) {
    for(int j = i; j < N; j++) {
        // O(1) operation
    }
}

这仍然是o(n^2),但是分析有点棘手:您需要取arithmetic series“1+2+3+的和…+n-1+n“,即n*(n-1)/2,或O(n^2)

关于algorithm - 方差的渐近运行时间是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17381080/

10-13 02:22