Quando parlo, come posso dire che l'ordine di complessità temporale di un algoritmo è O (N log N)?

22

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

posta matiascelasco 18.07.2015 - 09:01
fonte

4 risposte

60

"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.

    
risposta data 18.07.2015 - 09:08
fonte
51

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) )".

    
risposta data 18.07.2015 - 13:30
fonte
12

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 .

    
risposta data 18.07.2015 - 10:44
fonte
2

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.

    
risposta data 18.07.2015 - 15:53
fonte

Leggi altre domande sui tag