Как вы визуализируете разницу между O(log n) и O (N log n)?
двоичный поиск имеет среднюю производительность case как O(log n) и быстрая сортировка с O(n log n) is O(n log n) совпадает с O(n) + O (log n)
5 ответов
представьте себе базу данных с каждым человеком в мире. Это 6,7 миллиарда записей. O (log n) - это поиск в индексированном столбце (например, первичный ключ). O (n log n) возвращает все население в отсортированном порядке в неиндексированном столбце.
- O (log n) было закончено до того, как вы закончили читать первое слово этого предложения.
- O (N log n) все еще вычисляется...
другой способ представить себе это:
log n пропорционально к числу цифр в n.
n log n в N раз больше.
попробуйте написать число 1000 один раз против написания его тысячу раз. Первый занимает время O(log n), второй-O (N log n).
теперь попробуйте еще раз с 6700000000. Написать его один раз-все равно тривиально. Теперь попробуйте написать его 6,7 миллиарда раз. Даже если бы ты мог писать ее раз в секунду, ты был бы мертв еще до того, как закончил.
нет, O(n log n) = O(n) * O(log n)
в математике, когда у вас есть выражение (т. е. e=mc^2), если нет оператора, то вы умножаете.
обычно способ визуализации O (N log n) - "сделать что-то, что занимает log n расчеты n раза."
если у вас был алгоритм, который сначала перебирал список, а затем выполнял двоичный поиск этого списка (который был бы N + log N) вы can выразите это просто как O(n) потому что n гномов log n для больших значений n
A (log n) участок увеличивается, но вогнут вниз, что означает:
- он увеличивается, когда n становится больше
- Это
зависит от того, склонны ли вы визуализировать n как имеющее конкретное значение.
если вы склонны визуализировать n как имеющие конкретное значение, так и единицы f(n) время или инструкции, то O(log n) is n раза быстрее, чем O(n log n) для данной задачи размера n. Для памяти или единиц пространства, то O(log n) is n раз меньше для данной задачи в размере n. В этом случае, вы хотите обратить внимание на Йодомарин от f(n) для некоторых известных n. Вы визуализируете ответы на вопросы о том, сколько времени что-то займет или сколько памяти будет потреблять эта операция.
если вы склонны визуализировать n в качестве параметра, имеющего любое значение, тогда O(log n) is n раз более масштабируемым. O(log n) может завершить n раз больше задач размера n. В этом случае, вы ориентированы на домене f(n). Вы визуализируете ответы на вопросы о том, насколько велики n может получить, или сколько экземпляров f(n) вы можете работать параллельно.
ни одна перспектива не лучше другой. Первые можно использовать для сравнения подходов к решению конкретной задачи. Последнее может быть использовано для сравнения практических ограничений данных подходов.
