Обновление: После того, как я написал ответ ниже, @Nabb показал мне, почему он был неверным. Для получения дополнительной информации см. краткую запись Википедии на Õ и ссылки на нее. Хотя бы потому, что все еще необходимо предоставить контекст для комментариев @ Nabb's и @ Blueshift, а также потому, что все обсуждение остается интересным, мой первоначальный ответ сохраняется следующим образом.
ОРИГИНАЛЬНЫЙ ОТВЕТ (НЕПРАВИЛЬНЫЙ)
Позвольте мне предложить нетрадиционный ответ: хотя между O (n * n) и O (n) действительно есть разница, между O (n) и O (n * log (n)) нет никакой разницы.
Теперь, конечно, мы все знаем, что то, что я только что сказал, неправильно, не так ли? В конце концов, разные авторы сходятся во мнении, что O (n) и O (n * log (n)) различаются.
За исключением того, что они не отличаются.
Итак, радикальная позиция, естественно, требует оправдания, поэтому подумайте о следующем, а затем решайте сами.
Математически, по существу, порядок m функции f (z) таков, что f (z) / (z ^ (m + epsilon)) сходится, в то время как f (z) / (z ^ (м-эпсилон)) расходится для z большой величины и действительного, положительного эпсилона сколь угодно малого величина. z может быть реальным или сложным, хотя, как мы говорили, epsilon должно быть реальным. При таком понимании примените правило Л'Оспиталя к функции O (n * log (n)), чтобы убедиться, что оно не отличается по порядку от функции O (n).
Я бы сказал, что принятая литература по информатике в настоящее время немного ошибочна в этом вопросе. Эта литература в конечном итоге уточнит свою позицию в этом вопросе, но пока не сделала этого.
Теперь я не ожидаю, что вы согласитесь со мной сегодня. В конце концов, это всего лишь ответ на Stackoverflow - и что это такое по сравнению с отредактированной, официально рецензируемой, опубликованной книгой по информатике - не говоря уже о множестве таких книг? Вы не должны соглашаться со мной сегодня, просто примите то, что я написал, советуясь, подумайте об этом в ближайшие недели, проконсультируйтесь с одной или двумя из вышеупомянутых книг по информатике, которые занимают другую позицию, и примите решение самостоятельно. .
Между прочим, нелогичным следствием этой позиции ответа является то, что за O (1) время можно получить доступ к сбалансированному двоичному дереву. Опять же, мы все знаем, что это неправда, верно? Это должно быть O (log (n)). Но помните: нотация O () никогда не предназначалась для точного измерения вычислительных требований. Если n не очень велико, другие факторы могут быть более важными, чем порядок функции. Но даже для n = 1 миллиона log (n) составляет всего 20, по сравнению, скажем, с sqrt (n), который равен 1000. И я мог бы продолжать в том же духе.
Во всяком случае, подумайте. Даже если, в конце концов, вы решите, что не согласны со мной, тем не менее, вам может показаться интересным положение. Со своей стороны, я не уверен, насколько полезна запись O (), когда речь идет о O (записать что-либо).
@ Blueshift задает несколько интересных вопросов и поднимает некоторые достоверные замечания в комментариях ниже.Я рекомендую вам прочитать его слова.На самом деле мне нечего добавить к тому, что он говорит, кроме как заметить это, потому что немногие программисты имеют (или нуждаются) в твердом обосновании математической теории комплексной переменной, O (log (n))нотация ввела в заблуждение, вероятно, буквально сотни тысяч программистов, полагая, что они достигли в основном иллюзорного роста вычислительной эффективности.Редко на практике уменьшение O (n * log (n)) до O (n) действительно покупает то, что вы думаете, что оно покупает вас, если только у вас нет ясного представления о том, насколько невероятно медленной является функция логарифма -тогда как уменьшение O (n) даже до O (sqrt (n)) может принести вам много пользы.Математик сказал бы этому ученому десятилетия назад, но ученый не слушал, торопился или не понимал сути.И все в порядке.Я не противЕсть много моментов по другим предметам, которые я не понимаю, даже когда эти пункты мне тщательно объясняют.Но я верю, что именно это я и понимаю.По сути, это математическая точка, а не компьютерная точка, и это точка, в которой я оказался на стороне Лебедева и математиков, а не Кнута и компьютерных ученых.Это все.