Мне была задана проблема программирования, которая задала массив, определить, является ли это обходным порядком двоичного дерева. Мое решение заключается в следующем:Анализ Big-O - While Loops
public static boolean isPostOrder(int[] array) {
int root = array[array.length - 1];
int i = 0;
while(array[i] < root) {
i++;
}
while(array[i] > root) {
i++;
}
return i == array.length - 1;
}
Я пытаюсь понять, Big O. Я прочитал этот учебник:
What is a plain English explanation of "Big O" notation?
Однако я до сих пор путают о сложении и петель в то время. Я предполагаю, что в этом случае мои циклы while O (1), так как мы просто сравниваем значение в массиве с целым числом, или я ошибаюсь?
Теперь добавление также O (1), потому что мы просто добавляем 1 к некоторому целому числу 1, правильно?
Таким образом, это решение O (1) или я что-то упускаю?
O (1) - * постоянный * время доступа. Вы повторяете, нет? –
Стандартный цикл while, который вы представили, считается O (n). Добавление O (1). Если вы что-то делаете один раз, это O (1). Если вы делаете что-то 'n' раз, это O (n). – Compass
Ах ладно. Я также понял, что мое решение проблемы также неверно. Благодаря! – Sameer