Mit welchem Begriff kann ich etwas mit O (N log N) -Komplexität beschreiben?
Beispielsweise:
O (1): Konstante
O (log N): Logarithmisch
O (N): linear
O (N log N): ??????
O (N 2 ): Quadratisch
O (N 3 ): kubisch
Mit welchem Begriff kann ich etwas mit O (N log N) -Komplexität beschreiben?
Beispielsweise:
O (1): Konstante
O (log N): Logarithmisch
O (N): linear
O (N log N): ??????
O (N 2 ): Quadratisch
O (N 3 ): kubisch
Antworten:
"N log N" ist so gut wie nie zuvor und sollte von professionellen Programmierern verstanden werden. Sie können nicht erwarten, dass es ein einziges Wort gibt, das jede existierende Komplexitätsklasse beschreibt.
Es gibt einen Jargonbegriff linearithmisch , der genau dies bedeutet.
Ich glaube nicht, dass es von allen Programmierern allgemein verstanden wird. Wenn Sie also nicht aufpassen, wird es mehr verdecken, als es aussagt. Persönlich verwende ich es normalerweise nicht, und wenn ja, würde ich es wahrscheinlich bei der ersten Verwendung definieren, zum Beispiel "dieser Artikel berücksichtigt linearithmische ( O(N log N)
) Algorithmen".
Es wird manchmal als "loglinear" bezeichnet, obwohl dieses Wort tatsächlich etwas anderes bedeutet. Ich würde mich aber einfach an "N log N" halten, wie die Antwort von @ Philip nahelegt.
Da der Faktor log n
langsam wächst, wäre eine qualitative Beschreibung für O(n log n)
"fast linear". Abhängig von Ihrer Zielgruppe ist die Klasse der O(n log n)
Algorithmen möglicherweise gut bekannt, wie dies beispielsweise bei der schnellen Sortierung von n
Elementen durch Vergleiche der Fall ist .
O(n · f(n))
wof(n) << n
. Dies passt aber auch zu Dingen wieO(n · log log n)
undO(n α(n))
woα(n)
ist die Umkehrung der Ackermann-Funktion.