什么是 Big-O 和确切的运行时间
What is the Big-O and exact runtime
def alg 3(n)
x = 0
i = 1
while i < n:
for j in range(0, n**3,n*3):
x += 1
i *= 3
return x
我不太了解这段代码的大 O 和确切的运行时间。我首先认为 Big-O 是 O(n^3) * logn 因为 n**3 但 n * 3 让我感到困惑。有人可以解释这个问题吗?谢谢
为了计算复杂度,我们必须将问题分解为两个子问题:
- 内因:这个的复杂度是n³/3n ~ O(n²)
- 外面的 while: 我需要多少步才能达到 n:
- 第一步i=1
- 第二步i=3
- 第三步i=3*3=9
- 第 k 步 i = 3^k
因此第二个子问题的解是log3(k) ~ O(log(k))
最终的复杂度是:第一个子问题的复杂度乘以第二个子问题的复杂度 --> O(n²log(n))
def alg 3(n)
x = 0
i = 1
while i < n:
for j in range(0, n**3,n*3):
x += 1
i *= 3
return x
我不太了解这段代码的大 O 和确切的运行时间。我首先认为 Big-O 是 O(n^3) * logn 因为 n**3 但 n * 3 让我感到困惑。有人可以解释这个问题吗?谢谢
为了计算复杂度,我们必须将问题分解为两个子问题:
- 内因:这个的复杂度是n³/3n ~ O(n²)
- 外面的 while: 我需要多少步才能达到 n:
- 第一步i=1
- 第二步i=3
- 第三步i=3*3=9
- 第 k 步 i = 3^k
因此第二个子问题的解是log3(k) ~ O(log(k))
最终的复杂度是:第一个子问题的复杂度乘以第二个子问题的复杂度 --> O(n²log(n))