Здесь вы можете трактовать log(n)
как константу, вроде.
Каждая итерация цикла будет выполнять постоянный объем работы (sum+=...; k+=...
) несколько раз, равный n
/log(n)
.Есть n
итераций цикла.Таким образом, общая работа составляет n^2 / log(n)
.
Каждый раз, когда вы видите несколько операций, например:
---------------------b-------------------------
|O(blah) + O(blah) + O(blah) + O(blah) + O(blah)
|O(blah) + O(blah) + O(blah) + O(blah) .
a|O(blah) + O(blah) + O(blah) .
|O(blah) + O(blah) .
|O(blah) . . . .
Это a*b * O(blah)
- просто представьте квадрат (куда я положил.
с).Это постоянная часть 2D-прямоугольника (половина прямоугольника), следовательно, O(a*b)
.
. В приведенном выше случае b = n
, a = n/log(n)
и O (бла)= O(1)
(из внутреннего цикла)