gpt4 book ai didi

python - 两种算法的运行时复杂度(大 O 符号计算)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:04 24 4
gpt4 key购买 nike

这两种算法的大 O 表示法是什么:

def foo1(n):
if n > 1:
for i in range(int(n)):
foo1(1)
foo1(n / 2)

def foo2(lst1, lst2):
i = 1
while i < max(len(lst1), len(lst2)):
j = 1
while j < min(len(lst1), len(lst2)):
j *= 2
i *= 2

我认为 foo1 的运行时间复杂度是 O(n),因为在那种情况下,如果我看到 for 循环,我可以这样做:

T(n) = O(n) + O(n/2) <= c*O(n) (c is const) for all n.

是吗?

我无法计算 foo2 的运行时间,有人可以帮助我知道如何计算吗?

谢谢...

最佳答案

  1. 操作数T(n)等于T(n/2) + n。应用 Master theorem我们得到 T(n) = O(n)。简单来说,有 n + n/2 + n/4 + ... + 1 操作小于 2*n 并且是 O(n )

  2. 内层循环不依赖于外层循环,所以我们可以独立对待。 T(n) = O(log(maxlen) * log(minlen))

关于python - 两种算法的运行时复杂度(大 O 符号计算),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46790855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com