Это O (n log log n)
.
Внешний цикл просто повторяет внутренний цикл n
раз, что касается времени, поэтому он дает множитель n
.
.Внутренний цикл сложнее, он повторяет квадрат k
.Посмотрите, как это происходит: 2^1 -> 2^2 -> 2^4 -> 2^8 -> 2^16 -> 2^32 -> ...
Так, например, если n = 2^32
, цикл будет иметь 5
итераций.Здесь log_2 (n)
равно 32
, а log_2 (32)
равно 5
.
Обычно, если n = 2^(2^r)
, внутренний цикл достигнет n
после r
итераций.Взяв логарифм, мы приходим к log n = 2^r
.Взяв логарифм в другой раз, мы получим log log n = r
.Как вы, вероятно, знаете, основа логарифма не важна при работе с асимптотическим поведением, если она постоянна.
Итак, у нас есть n
итераций цикла, который сам делает log log n
итераций, делая общую сложность O (n log log n)
.