def function(N):
foo = 1
while foo < N:
foo *= 2
return foo
I think it's O(log N), since foo is being multiplied by a constant amount?
def function(N):
foo = 1
while foo < N:
foo *= 2
return foo
I think it's O(log N), since foo is being multiplied by a constant amount?
This is something you can easily show by the definition of logarithm. For simplicity we consider base 2 logarithm (all log bases are equivalent in big-O notation since they are all within a constant factor of each other).
log2 n = k
means:
2 ** k = n
but 2 ** k
is actually 2 * 2 * 2 ... * 2
(k
times) -- for integer k
.
For any given n
, k
may not be integer, but you can safely consider the next positive integer k
as that guarantees that 2 ** k
is larger than n
.
So, the number of * 2
operation needed to go from 1
to n
is k
(within unity).