计算以下代码的时间复杂度

时间:2020-04-14 21:58:21

标签: python time-complexity big-o

有人可以帮忙找到以下代码的复杂性吗?

def mystery(n):
    sum = 0
    if n % 2 == 0:
        for i in range(len(n + 10000)): 
            sum += 1

    elif n % 3 == 0:
        i, j = 0, 0
        while i <= n:
            while j <= n:
                sum += j - 1
                j += 1
            i += 1
    else:
        sum = n**3

以下代码的时间复杂度是否为O(n ^ 2),因为在最坏的情况下,elif语句将被执行,因此外部while循环将执行n次,而嵌套的while循环将执行n一次一次是因为我们从未重置过j吗?因此,我们将有O(n ^ 2 + n),并且由于前导项是n ^ 2,所以复杂度将是O(n ^ 2)?

1 个答案:

答案 0 :(得分:0)

elif部分:

  • i = 0时,while j <= n:循环为O(n)。
  • i> 0时,j = n + 1,因此while j <= n:循环为O(1)。

因此elif部分为O(n)+ O(n * 1)= O(n + n)= O(n)。