Как рассчитать сложность процесса для следующей функции?Вычислите сложность процесса для следующей функции
int Compute (int n)
{
int j = 0;
int i = 0;
while (i<=n)
{
i = 2*j + i + 1;
j++;
}
return j-1;
}
Теперь я знаю, что цикл имеет O (N) времени сложность, но в этом случае i
растет гораздо более быстрыми темпами. Принимая эту итерацию по итерации, я выяснил, что для каждой m-й итерации i = m^2
. Но я все еще смущен, как рассчитать Big-O.
Я думаю, что 'O (sqrt (n) - 2) = O (sqrt (n))' является правильным. Но 'мы останавливаемся, когда i <= n' должно быть' i> n'. –
Исправлено. Спасибо @KubaSpatny – user1952500
Я тоже нашел шаблон, но не смог найти соединение. Спасибо за разъяснения! – user3484582