C 这段代码的时间复杂度是多少?
这段代码的时间复杂度是多少 我想知道这段代码的时间复杂度。对我来说,我计算为logn,因为外循环运行logn次,内循环运行logn次。但是我很困惑,因为内环j依赖于i。那么实际的时间复杂度是多少?为什么?确切的总和是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 + .
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我更正了标题你的答案很枯燥,只是一个公式,请在你的答案中多说些-@戴夫-答案既优雅简洁,又完全有意义。你已经准确地解释了为什么正确答案是开着的,没有使用任何多余的措辞。干得好!你的答案很枯燥,只是一个公式,请在你的答案中多说-@戴夫-答案既优雅简洁,又完全有意义。你已经准确地解释了为什么正确答案是开着的,没有使用任何多余的措辞。干得好!