gpt4 book ai didi

algorithm - 这个算法是二次的还是线性的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:17:18 27 4
gpt4 key购买 nike

我有以下算法:

s=0
for j=1 to n
k=n
while k>0
s++
k=(int)k/2
endwhile
endfor

对于我在什么时候分析的内容:

j=1 the while loop executes 1 time
j=2 the while loop executes 2 times
j=3 ... 2 times
j=4 ... 3 times
j=5 ... 3 times
j=6 ... 3 times
j=7 ... 3 times
j=8 ... 4 times

所以我将对外循环求和 (n/2)*n,这会是 O(n^2) 吗?

最佳答案

内部循环将执行 floor(log2n) 次,所以整个算法有 O(n.long(n)) 复杂性。

可以看到内层循环执行了这个次数

 n    times
-------------
1 1
2 2
4 3
8 4
16 5
32 6
... ...
2ⁿ n+1

等式两边取log2(),得到:

 n     log(n+1)

log(n+1)O(log(n))

关于algorithm - 这个算法是二次的还是线性的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39474033/

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