Как оператор if этого кода влияет на временную сложность этого кода?
Исходя из этого вопроса: Анализ времени выполнения , цикл for в операторе if будет выполнятьсяn * n раз. Но в этом коде j опережает i , так что после запуска второго цикла j = i^2
. Что из этого делает временную сложность третьего цикла for? Я понимаю, что первый цикл for выполняется n раз, второй - n^2
раз, а третий - n^2
раз в течение определенного количества раз при запуске. Таким образом, сложность будет определяться как n*n^2(xn^2)
, для которой n
- это число раз, когда утверждение if является истинным. Сложность не просто O(n^6)
, потому что выражение if не верно n раз, верно?
int n;
int sum;
for (int i = 1; i < n; i++)
{
for (int j = 0; j < i*i; j++)
{
if (j % i == 0)
{
for (int k = 0; k < j; k++)
{
sum++;
}
}
}
}