gpt4 book ai didi

algorithm - 下面代码的时间复杂度是多少O(n)?

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

我正在解决 Interview Bit 上的一个时间复杂度问题,如下图所示。 enter image description here

这道题的正确答案是O(N)。但根据我的说法,答案应该是 O(NlogN)。由于第一个“for 循环”的复杂度应该是 O(logN),因为变量 i 在每次迭代中都被除以 2,而且我研究过每当循环变量乘以或除以 2 时,时间复杂度为 O (logN)。现在,对于第二个“for 循环”,复杂度应该是 O(N),因此,最终的复杂度应该是 O(N*logN)。

谁能解释一下我哪里错了?

最佳答案

做实际的数学:

T(N) = N + N/2 + N/4 + ... + 1 (log_2 N terms in the sum)

这是一个比例为 1/2 的几何级数,因此总和等于:

T(N) = N*[1 - (1/2)^(log_2 N)] / (1 - 1/2) =
= [N - N/(2^log_2 N)] / 0.5 =
2^log_2 N = N
= (N - 1) / 0.5

所以 T(N)O(N)

关于algorithm - 下面代码的时间复杂度是多少O(n)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42223300/

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