这个python代码的最坏情况复杂性

时间:2017-01-28 09:08:27

标签: algorithm time-complexity

以下情况的最坏情况时间复杂度是什么:

def fun(n):
    count=0
    i=n
    while i>0:
        for j in range(0,i):
            count+=1
        i/=2
    return count

1 个答案:

答案 0 :(得分:0)

如果n是一个非常大的整数,则情况时间复杂度最差。

O(log(n)* n)(猜测)。

以下是我的结论。

while i>0:
        ...
        i/=2

这将运行log(n)次,因为它每次运行时都会减半。

for j in range(0,i):

这将首先运行n次,第二次运行n / 2次,依此类推。因此,该行的总运行时间为n + n / 2 + n / 4 .... 1 =(2n-1)

count+=1

这是一个便宜的操作,所以是O(1)。

因此,如果n是整数,则使该函数的总运行时间 O(log(n))* O(2n-1)。简化变为 O(log(n)*(n))