Освежающие на сложность алгоритма, я смотрел на этот пример:вывод алгоритма сложности
int x = 0;
for (int j = 1; j <= n; j++)
for (int k = 1; k < 3*j; k++)
x = x + j;
Я знаю, что петли заканчивается время O (N^2). Я полагаю, что внутренний цикл выполняется 3 * n раз (3 (1 + 2 + ... n)), а внешний цикл выполняется n раз. Итак, O (3n * n) = O (3n^2) = O (n^2).
Однако источник, на который я смотрю, расширяет выполнение внутреннего цикла до: 3(1+2+3+...+n) = 3n^2/2 + 3n/2
. Может ли кто-нибудь объяснить время исполнения 3n^2/2 + 3n/2
?
Не сказал, что вы не получите здесь хорошего ответа, но может быть лучше для http://cs.stackexchange.com – yamafontes
вы можете уточнить, что вы спрашиваете? Почему «3n^2/2 + 3n/2' является O (n^2) или почему это может выполняться много раз? – Adam
Конечно. Почему он выполняет '3n^2/2 + 3n/2'? Я не понимаю деление на 2. – DashControl