Quel terme puis-je utiliser pour décrire quelque chose avec une complexité O (N log N)?
Par exemple:
O (1): Constante
O (log N): Logarithmique
O (N): linéaire
O (N log N): ??????
O (N 2 ): Quadratique
O (N 3 ): Cubique
algorithms
algorithm-analysis
big-o
matiascelasco
la source
la source
O(n · f(n))
oùf(n) << n
. Mais cela correspond aussi à des choses commeO(n · log log n)
etO(n α(n))
oùα(n)
est l'inverse de la fonction Ackermann.Réponses:
"N log N" est aussi bon que vous allez en avoir, et devrait être bien compris par les programmeurs professionnels. Vous ne pouvez pas vous attendre à ce qu'il y ait un seul mot pour décrire chaque classe de complexité qui existe.
la source
Il existe un terme de jargon linéarithmique qui signifie exactement cela.
Je ne pense pas que ce soit universellement compris par tous les programmeurs, donc si vous ne faites pas attention, cela obscurcira plus qu'il n'informe. Personnellement, je ne l'utilise pas normalement, et si je le faisais, je le définirais probablement lors de la première utilisation, par exemple "cet article considère les
O(N log N)
algorithmes linearithmic ( )".la source
Il est parfois appelé "loglinear", bien que ce mot signifie en réalité quelque chose de différent. Cependant, je me contenterais de "N log N", comme le suggère la réponse de @ Philip .
la source
Parce que le facteur
log n
croît lentement, une description qualitative deO(n log n)
serait «presque linéaire». Selon votre public, la classe d'O(n log n)
algorithmes peut être bien connue, comme c'est le cas par exemple pour le tri rapide desn
éléments par comparaison.la source