Che termine posso usare per descrivere qualcosa con complessità di O (N log N)?
Ad esempio:
-
O (1): costante
-
O (log N): logaritmico
-
O (N): lineare
-
O (N log N): ??????
-
O (N 2 ): Quadratico
-
O (N 3 ): Cubico
Che termine posso usare per descrivere qualcosa con complessità di O (N log N)?
Ad esempio:
O (1): costante
O (log N): logaritmico
O (N): lineare
O (N log N): ??????
O (N 2 ): Quadratico
O (N 3 ): Cubico
"N log N" è buono come quello che otterrai e dovrebbe essere ben compreso dai programmatori professionisti. Non puoi aspettarti che ci sia una singola parola per descrivere ogni classe di complessità che esiste.
C'è un termine in gergo linearithmic che significa esattamente questo.
Non credo che sia universalmente compreso da tutti i programmatori, quindi se non stai attento allora oscurerà più di quanto non informi. Personalmente di solito non lo uso, e se lo facessi, probabilmente lo definirei al primo utilizzo, ad esempio "questo articolo considera gli algoritmi linearithmic ( O(N log N)
)".
A volte viene chiamato "loglinear", anche se quella parola in realtà significa qualcosa di diverso. Mi limiterei a utilizzare "N log N", tuttavia, come suggerisce @ Philip's answer .
Poiché il fattore log n
aumenta lentamente, una descrizione qualitativa per O(n log n)
sarebbe "quasi lineare". A seconda del pubblico, la classe degli algoritmi O(n log n)
potrebbe essere ben nota, come ad esempio questo è il caso con l'ordinamento rapido su n
articoli per confronto.
Leggi altre domande sui tag algorithms big-o algorithm-analysis