每增加一个 n 就加倍的算法的 bigO 是多少?
What is the bigO of an algorithm that doubles with each added n?
只是我用我写的一些代码观察到的:
n = 24, time = 3s
n = 25, time = 6s
n = 26, time = 12s
n = 27, time = 24s
n = 28, time = 48s
光看这个数字,这段代码的bigO是什么?我想说 2*n,但我们知道常数并不重要。它只是 O(n) 吗?看起来不像。
编辑:2^N?
所以,你的意思是 time(n) = time(n-1) * 2
?
是的,那是 time(n) = 2^n
t(n) = 2*t(n-1) = 2*(2*t(n-2)) = 2*2*t(n-2) = 2*2*2t(n-3) = 2^i*t(n-i)
t(n) = 2^n*t(n-n) = 2^n*t(0) = 2^n
只是我用我写的一些代码观察到的:
n = 24, time = 3s
n = 25, time = 6s
n = 26, time = 12s
n = 27, time = 24s
n = 28, time = 48s
光看这个数字,这段代码的bigO是什么?我想说 2*n,但我们知道常数并不重要。它只是 O(n) 吗?看起来不像。
编辑:2^N?
所以,你的意思是 time(n) = time(n-1) * 2
?
是的,那是 time(n) = 2^n
t(n) = 2*t(n-1) = 2*(2*t(n-2)) = 2*2*t(n-2) = 2*2*2t(n-3) = 2^i*t(n-i)
t(n) = 2^n*t(n-n) = 2^n*t(0) = 2^n