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
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
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.
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 ( )".
Às vezes é chamado de "loglinear", embora essa palavra realmente signifique algo diferente. Gostaria apenas de "N log N", como sugere a resposta de Philip .
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.