gpt4 book ai didi

algorithm - 找到模块化算法的Big-O

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

i=1
while i <= n do:
j=0
k=i
while k%3 == 0 do:
k = k/3
j++
end

print i, j
i++
end

什么是给定算法的Big-O(我们如何展示我的工作)? 这个算法输出什么//?

我的回答和做法

O(nlogn)。因为外循环运行线性时间为 O(n),而内循环依赖于 O(logn)

但是我不确定是不是logn

当 n = 10 时,

ij
00
10
20
31
40
50
61
70
80
92
100 ( 10, 0)

当 n = 30

i j
1 0
2 0
3 1
4 0
5 0
6 1
7 0
8 0
9 2
10 0
11 0
12 1
13 0
14 0
15 1
16 0
17 0
18 2
19 0
20 0
21 1
22 0
23 0
24 1
25 0
26 0
27 3
28 0
29 0
30 1

最佳答案

请注意,从 1n 系列中的每三个数字都可以被 3 整除。在最坏的情况下,这样的数字最终会被 3 整除在 k 循环 log_3(i) 次。因此,该序列在三分之二的时间里表现得像O(n),在三分之一的时候像O(n*log3(n))。因此,我们可以声称您的代码的上限为 O(n*log3(n)),尽管存在比这更严格的界限。

代码将打印系列中的每个值 i 以及该数字的“三个深度”。 “三深度”是指我们能够将 i 除以 3 的次数。显然,对于不是 3 的倍数的 i 值,深度为 0。

关于algorithm - 找到模块化算法的Big-O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48759959/

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