void foo(int n){
int i = 1, sum = 1;
while (sum <= n) {
i++;
sum+=i;
}
}
Что я чувствую, цикл прекратится, только если сумма станет больше аргумента n
. И Sum
на j
-й итерации: S(j) = S(j-1) + j
Какова сложность времени выполнения следующего кода?
S(1) = S(0) + 1
S(2) = S(1) + 2
S(3) = S(2) + 3
...
S(n) = S(n-1) + n
Как я должен идти дальше? Я застрял в этом повторении.
Петля прекращается, когда 1 + 2 + 3 + ... + j
раз становится больше n
. Но я не уверен, если все в порядке.
Короткий ответ: это 'O (sqrt (n))' – starrify
Пожалуйста, скажите мне, как вы это вывели? – susenj
Нет, пожалуйста, не надо. Она сама должна выяснить свою домашнюю работу. –