Die n
wird wie folgt reduziert:
n + n/2 + n/4 + n/8 + .... + 8 + 4 + 2 + 1
Die Summe der obigen Reihe ist 2^(log(n)) - 1
.
Nun zu der obigen Frage kommen. Die Anzahl der Male, die die Schleife ausgeführt wird, ist die Anzahl der Elemente, die in der obigen Reihe erscheinen = Zeitkomplexität des Algorithmus.
Die Anzahl der Elemente in der obigen Reihe ist logn
. Die Zeitkomplexität des Algorithmus ist also O(logn)
.
Example:
n = 8; the corresponding series:
8 + 4 + 2 + 1 = 15(2^4 - 1) ~ 2^4 ~ 2^logn
Here, number of items in series = 4
therefore,
time complexity = O(number of iteration)
= O(number of elements in series)
= O(logn)
Ich denke, du meinst 'n> 0 '. Ich hätte gesagt, dass es "O (log (N)^2)" ist, wobei "N" der Wert ist (vorausgesetzt, dass es keine Bytes mehr als benötigt hat) –
Seit zurückgegebene "count = logN" (approx). also bewiesen –