Я сейчас обучение Big-O нотации и наткнулся на этот небольшой алгоритм в другом потоке:Сложность времени для следующего алгоритма?
i = n
while (i >= 1)
{
for j = 1 to i // NOTE: i instead of n here!
{
x = x + 1
}
i = i/2
}
Согласно автору поста, его сложность Θ (п), но я не могу выяснить как. Я думаю, что сложность цикла while равна Θ (log (n)). Сложность цикла for из того, что я думал, также будет Θ (log (n)), поскольку количество итераций будет уменьшаться в два раза каждый раз.
Итак, не будет ли сложность всего этого Θ (log (n) * log (n)), или я делаю что-то неправильно?
Edit: сегмент в лучшем ответе этого вопроса: https://stackoverflow.com/questions/9556782/find-theta-notation-of-the-following-while-loop#=
Вы должны ссылаться на вопрос, который вы видели ранее. –