Это O (N ^ 2) или O (nlogn).
Это ни то, ни другое.
Разве это не ^ ^ 2, когда есть вложенные циклы?
Это верно, когда вы перебираетепредметы линейно.Это не так в вашем случае.
В вашем случае ...
Значения i
: 1 2 4 8 16 ... N
внутренний цикл выполняется 2 + 4 + 8 + 16 + 32 ... N раз.
Это геометрический ряд.Сумма геометрического ряда равна a(1 - r^n)/(1 - r)
.
В вашем случае a
равно 2
, r
равно 2
, а n
равно log2(N)
(журнал с основанием 2).Следовательно, после некоторого упрощения сумма равна 2*2^(log2(N))
, что равно 2*N
.
, т.е. ваша алгоритмическая сложность равна O(N)
.
Спасибо @LedHead заисправление ошибки в исходном посте.