Посмотрите на эту часть вашего кода:
while (i < n) {
count++;
i = i * 2;
}
i
умножается на 2
на каждой итерации.
Первоначально i
равно 1
.
Итерация I:
i = 1 * 2;
=> i = 2
Итерация II:
i = 2 * 2;
=> i = 4
Итерация III:
i = 4 * 2;
=> i = 8
Итерация IV:
i = 8 * 2;
=> i = 16
.....
.....
и т. Д.
Предполагается n
это число, которое равно 2 k . Это означает, что l oop будет выполнено k
раз. В k
th шаг:
2 k = n
Взятие логарифмов (основание 2) с обеих сторон:
log (2 k ) = log (n)
k log (2) = log (n)
k = log (n) [as log2 (база 2) = 1]
Следовательно, сложность времени равна O (log (n)).