gpt4 book ai didi

algorithm - fun() 的时间复杂度?

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

我正在通过这个问题来计算时间复杂度。

int fun(int n)
{
int count = 0;
for (int i = n; i > 0; i /= 2)
for (int j = 0; j < i; j++)
count += 1;
return count;
}

我的第一印象是 O(n log n) 但答案是 O(n)。请帮助我理解为什么它是O(n)。

最佳答案

内层循环执行n次迭代,然后是n/2,然后是n/4,等等。所以内层循环的总数迭代是:

   n + n/2 + n/4 + n/8 + ... + 1  
<= n * (1 + 1/2 + 1/4 + 1/8 + ...)
= 2n

(参见 Geometric series ),因此是 O(n)。

关于algorithm - fun() 的时间复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676979/

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