Вопрос 1
for (i = 0; i < n; i++) {
for (j = 0; j < i * i ; j++){
}
}
Answer: O(n^3)
На первый взгляд, O (n ^ 3) имело смысл для меня, но я помню предыдущую проблему, которую я сделал:
Вопрос 2
for (int i = n; i > 0; i /= 2) {
for (int j = 0; j < i; j++) {
//statement
}
}
Answer: O(n)
Для Вопроса 2 внешний l oop равен O (log n), а внутренний l oop равен O (2n / log n), что приводит к На). Внутренний l oop равен O (2n / log n), потому что - см. Объяснение здесь: Большой O вложенного L oop (int j = 0; j
Почему мы не делаем Вопрос 1, как Вопрос 2, поскольку в Вопросе 1 j
также зависит от i
, что означает, что мы действительно должны брать среднее число повторений, которое произойдет во внутренней l oop (как мы делаем в вопросе 2).
Мой ответ будет таким: O (n) для внешнего l oop и O (n ^ 2 / n) для внутреннего l oop, что приводит к O (n ^ 2) для вопроса 1 .