Как вы визуализируете разницу между 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 миллиарда раз. Даже если бы ты мог писать ее раз в секунду, ты был бы мертв еще до того, как закончил.


вы можете визуализировать его в сюжете, см. здесь например:

enter image description here


нет, 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) вы можете работать параллельно.

ни одна перспектива не лучше другой. Первые можно использовать для сравнения подходов к решению конкретной задачи. Последнее может быть использовано для сравнения практических ограничений данных подходов.