I am going to give a bit more general case answer, without assuming constant size of int
.
The answer is Theta(logn)
.
We know newton-raphson is Theta(logn) - that excludes Theta(n)
(assuming sqrt()
is as efficient as we can).
However, a general number n
requries log_2(n)
bits to encode - and you require to read all of it in order to get an accurate sqrt()
function. This excludes Theta(1)
and Theta(log(log(n))
.
From the above, we know that the complexity of the function is Theta(log(n))
.
As a side note, since O(log(n))
is a subset of O(n)
- it is also a valid answer, though not tight one. For more information about big Theta and big O and their differences, you might want to have a look on this thread.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…