Какой термин я могу использовать для описания чего-либо со сложностью O (N log N)?
Например:
O (1): постоянная
O (log N): логарифмический
O (N): линейный
O (N log N): ??????
O (N 2 ): квадратичный
O (N 3 ): кубический
Какой термин я могу использовать для описания чего-либо со сложностью O (N log N)?
Например:
O (1): постоянная
O (log N): логарифмический
O (N): линейный
O (N log N): ??????
O (N 2 ): квадратичный
O (N 3 ): кубический
Ответы:
«N log N» так же хорош, как вы собираетесь получить, и должно быть хорошо понято профессиональными программистами. Вы не можете ожидать, что будет одно слово для описания каждого существующего класса сложности.
Существует термин жаргон linearithmic означает именно это.
Я не верю, что это все понимают все программисты, поэтому, если вы не будете осторожны, тогда это будет скрывать больше, чем сообщать. Лично я обычно не использую его, и если бы я это сделал, я бы, вероятно, определил его при первом использовании, например, «в этой статье рассматриваются O(N log N)
алгоритмы linearithmic ( )».
Иногда его называют «логлинейным», хотя это слово на самом деле означает нечто иное. Я бы просто придерживался "N log N", хотя, как подсказывает ответ @ Philip .
O(n · f(n))
гдеf(n) << n
. Но это также соответствует таким вещам, какO(n · log log n)
иO(n α(n))
гдеα(n)
обратная функция Аккермана.