Пусть m = floor(lg(n))
.Тогда 2^m = C*n
с 1 <= C < 2
.Число k
шагов во внутреннем цикле выглядит следующим образом:
1, 2, 4, 8, ..., 2^m = 2^0, 2^1, ..., 2^m
Следовательно, общее количество операций составляет
2^0 + 2^1 + ... + 2^m = 2^{m+1} - 1 ; think binary
= 2*2^m - 1
= 2*C*n - 1 ; replace
= O(n)