¿Qué término puedo usar para describir algo con complejidad O (N log N)?
Por ejemplo:
O (1): constante
O (log N): logarítmico
O (N): lineal
O (N log N): ??????
O (N 2 ): Cuadrático
O (N 3 ): cúbico
algorithms
algorithm-analysis
big-o
matiascelasco
fuente
fuente
O(n · f(n))
dóndef(n) << n
. Pero esto también coincide con cosas comoO(n · log log n)
yO(n α(n))
dóndeα(n)
es la inversa de la función de Ackermann.Respuestas:
"N log N" es tan bueno como lo que vas a obtener, y los programadores profesionales deben entenderlo bien. No puede esperar que haya una sola palabra para describir cada clase de complejidad que existe.
fuente
Hay un término jerárquico linearithmic que significa exactamente esto.
No creo que todos los programadores lo entiendan universalmente, así que si no tienes cuidado, oscurecerá más de lo que informa. Personalmente, normalmente no lo uso, y si lo hiciera, probablemente lo definiría en el primer uso, por ejemplo, "este artículo considera los
O(N log N)
algoritmos linearithmic ( )".fuente
A veces se le llama "loglinear", aunque esa palabra en realidad significa algo diferente. Sin embargo, me quedaría con "N log N", como sugiere la respuesta de @ Philip .
fuente
Debido a que el factor
log n
crece lentamente, una descripción cualitativa paraO(n log n)
sería "casi lineal". Dependiendo de su audiencia, la clase deO(n log n)
algoritmos puede ser bien conocida, como por ejemplo este es el caso de la clasificación rápida den
elementos por comparación.fuente