Скажем, n = length(A)
и предположим сначала, что мы находимся в более простом случае, где length(A) = 2^m
, для некоторого целого числа m
.
Тогда i
, будучи разделенным пополам на каждом шаге, будет иметь значения:
2^m, 2^{m-1}, 2^{m-2}, ..., 2, 1, 0
, который показывает, что цикл будет выполняться m
раз, пока i
не достигнет 0
. Поскольку n = 2^m
, это означает, что m = lg n
и, следовательно, сложность составляет O(lg n)
.
В общем случае определите m := floor(lg n)
. Приведенный выше анализ показывает, что цикл будет повторяться m
раз, пока i
не станет 0
. Таким образом, сложность будет O(floor(lg n))
, которая равна O(lg n)
.