这些功能的运行时间是多少?

时间:2015-12-07 19:20:33

标签: python master-theorem

运行时间是多少?

def a(n):
    if n % 2 == 0:
        return n
    else:
        return a(n/2)

我的猜测T(n)= T(n / 2)+ 1,然后使用主定理。

这个功能怎么样:

def b(n):
    for i in range(n):
        print(a(i))

这是我的猜测。

T(n)= nT(n / 2)+ 1

1 个答案:

答案 0 :(得分:1)

第一个是O(logN),第二个是O(NlogN)。

1)你每次迭代都会减少一半的问题。所以你迭代的总次数是:

我这样2 ** i = N,在数学i =基数2中的logN。有O(logN)

2)你正在遍历整个N大小的列表,所以O(N),但是你在每次迭代时调用一个logN函数。所以我们调用logN函数N次。这是O(NlogN)。