C 这段代码的时间复杂度是多少?

C 这段代码的时间复杂度是多少?,c,algorithm,complexity-theory,C,Algorithm,Complexity Theory,这段代码的时间复杂度是多少 我想知道这段代码的时间复杂度。对我来说,我计算为logn,因为外循环运行logn次,内循环运行logn次。但是我很困惑,因为内环j依赖于i。那么实际的时间复杂度是多少?为什么?确切的总和是 n + n/2 + n/4 + ... + 1 那是 n * (1 + 1/2 + 1/4 + ... + 1/n) 众所周知,1/2的非负幂和在极限中接近2,因此总和接近2*n。因此,复杂性正在增加;i减小得足够快,以避免增长。精确的总和为 n + n/2 + n/4 + .

这段代码的时间复杂度是多少

我想知道这段代码的时间复杂度。对我来说,我计算为logn,因为外循环运行logn次,内循环运行logn次。但是我很困惑,因为内环j依赖于i。那么实际的时间复杂度是多少?为什么?

确切的总和是

n + n/2 + n/4 + ... + 1
那是

n * (1 + 1/2 + 1/4 + ... + 1/n)
众所周知,1/2的非负幂和在极限中接近2,因此总和接近2*n。因此,复杂性正在增加;i减小得足够快,以避免增长。

精确的总和为

n + n/2 + n/4 + ... + 1
那是

n * (1 + 1/2 + 1/4 + ... + 1/n)

众所周知,1/2的非负幂和在极限中接近2,因此总和接近2*n。因此,复杂性正在增加;i的下降速度足以避免增长。

n+n/2+n/4+…+1=2n,所以这是开的。

n+n/2+n/4+…+1=2n,所以这是开的

iteration         | inner loop steps
    0             |        n
    1             |        n/2
    2             |        n/4
    3             |        n/8
    4             |        n/16
    .
    .
    .
    .
    log(n)        |        n/(2^logn) = 1
     
n + n/2 + n/4 + n/8 ... + 1 = n(1 + 1/2 + 1/4 + ... 1/n) 
哪个在电视上

收敛到1

哪个在电视上


收敛到1。

你是指int i=n;i>0;i/=2@dreamcrash对谢谢,更正了没有什么让人困惑的code@paulsm4你是想让那评论对作品有所帮助吗?@paulsm4我更正了标题,你是指int I=n;i>0;i/=2@dreamcrash对谢谢,更正了没有什么让人困惑的code@paulsm4你是想让这个评论对作品有所帮助吗?@paulsm4我更正了标题你的答案很枯燥,只是一个公式,请在你的答案中多说些-@戴夫-答案既优雅简洁,又完全有意义。你已经准确地解释了为什么正确答案是开着的,没有使用任何多余的措辞。干得好!你的答案很枯燥,只是一个公式,请在你的答案中多说-@戴夫-答案既优雅简洁,又完全有意义。你已经准确地解释了为什么正确答案是开着的,没有使用任何多余的措辞。干得好!