Ваша граница не жесткая, потому что вы посчитали i
как Θ (n), но i
в среднем не Θ (n). Рассмотрим последовательность значений, которые принимает i
, и сложим их, чтобы подсчитать общее количество итераций для внутреннего l oop. Мы можем пока игнорировать середину l oop над j
, поскольку она не зависит от i
и k
.
Последовательность значений для i
равна 1, 2, 4, 8, ... до п. Если мы скажем, что n = 2 r для некоторого r, это прогрессия геометрии c с суммой 2 r + 1 - 1, которая примерно вдвое больше, чем n, поэтому это Θ (н). Это учитывает как внешний, так и внутренний цикл; середина l oop дает другой коэффициент of (n 1/3 ), и, следовательно, общая сложность составляет Θ (n 4/3 ), как требуется.