Второй цикл не O(n), он O(n^2) сам по себе.
for (int i = 0; i < n; i++) -> runs n times.
for (int j = 0; j < n * n; j++) -> runs n² times.
for (int k = 0; k < j; k++) -> runs n² times (k == j == n²)
n * n² * n² = n^5.
Sum++++ является операцией постоянного времени выполнения (1) и поэтому может быть проигнорирована.
Третий цикл не выполняется n ^ 2 раза, но выполняется O (n ^ 2). раз. Лучше оставаться формальным, чтобы избежать путаницы.
Да, формальности никогда не были моим фаворитом... Я оставлю пост как есть, думаю, вашего комментария в качестве подсказки должно быть достаточно, спасибо :)
Самый внутренний цикл выполняется за квадратичное время (не постоянное), поэтому он должен быть O(n) * O(n^2) * O(n^2) = O(n^5).
Вот все расходы:
Самый внешний цикл - O(n)
Второй цикл - O(n^2) за каждый элемент внешнего цикла
Самый внутренний цикл - O(n^2) за каждый элемент для второго цикла
Самый внутренний цикл выполняется за квадратичное время (не постоянное), поэтому должно быть O(n) * O(n^2) * O(n^2) = O(n^5)