Que termo posso usar para descrever algo com complexidade O (N log N)?
Por exemplo:
O (1): Constante
O (log N): logarítmico
O (N): Linear
O (N log N): ??????
O (N 2 ): Quadrático
O (N 3 ): Cúbico
algorithms
algorithm-analysis
big-o
matiascelasco
fonte
fonte
O(n · f(n))
ondef(n) << n
. Mas isso também combina com coisas comoO(n · log log n)
eO(n α(n))
ondeα(n)
é o inverso da função Ackermann.Respostas:
"N log N" é tão bom quanto você conseguirá e deve ser bem compreendido por programadores profissionais. Você não pode esperar que exista uma única palavra para descrever todas as classes de complexidade que existem.
fonte
Existe um termo de jargão linearitmico que significa exatamente isso.
Não acredito que seja universalmente entendido por todos os programadores; portanto, se você não tomar cuidado, ele obscurecerá mais do que informa. Pessoalmente, normalmente não o uso e, se o fizesse, provavelmente o definiria no primeiro uso, por exemplo "este artigo considera
O(N log N)
algoritmos linearitmicos ( )".fonte
Às vezes é chamado de "loglinear", embora essa palavra realmente signifique algo diferente. Gostaria apenas de "N log N", como sugere a resposta de Philip .
fonte
Como o fator
log n
cresce lentamente, uma descrição qualitativa para "O(n log n)
seria quase linear". Dependendo do seu público, a classe deO(n log n)
algoritmos pode ser bem conhecida, como por exemplo, este é o caso da classificação rápida den
itens por comparação.fonte