Упорядочение списка сложностей (Big O)

#big-o

#big-o

Вопрос:

Учитывая список сложностей:

Как вы упорядочиваете их в порядке Big O?

Я думаю, ответ ниже?

Теперь вопрос в том, как это сделать log(n!) n log(n) . Также я не знаю, получил ли я n! и (n-1)! правильно. Возможно ли, что c ^ n может быть больше n !? Когда c> n?

В общем, как мне визуализировать такую большую проблему… мне потребовалось довольно много времени, чтобы сделать это … по сравнению с кодированием до сих пор… Любые ресурсы, видео, открытые учебные ресурсы MIT, что-нибудь с объяснением

Комментарии:

1. Я нашел очень поучительным построение различных функций в Excel, чтобы визуально понять, как каждая из них растет с увеличением N.

Ответ №1:

Возможно, вы захотите посмотреть, как растут функции. Вот краткий график из Wolfram Alpha:

Ссылка

В общем, n^n растет намного быстрее, чем c^n для любого n большего, чем некоторые n_0 (потому n c что в какой-то момент обгонит, даже если c чрезвычайно велико). логарифм растет намного медленнее, чем квадратичный или экспоненциальный, и немного быстрее, чем линейный.

O(log(n!)) = O(nlogn) Я полагаю, что было нечто, называемое приближением Стирлинга. Это сводится к тому, что O(n!) = O(n^n) as n! = n*(n-1)*(n-2)*...*2*1 , so n^n = n*n*n*...*n — это верхняя граница. Можно доказать, что это также нижняя граница, но вам это не нужно.

Поскольку log(n^n) = nlogn по правилам журнала, O(log(n!) = O(log(n^n)) = O(nlogn) .