Wenn Leute "Sortieralgorithmus" sagen, beziehen sie sich oft auf "Vergleichsortieralgorithmus", welcher Algorithmus ist nur abhängig von der Fähigkeit zu fragen, "ist das Ding größer oder kleiner als das ". Wenn Sie also nur eine Frage zu den Daten stellen, erhalten Sie nie mehr als n * log (n) (dies ist das Ergebnis einer log (n) Suche der n faktoriellen möglichen Ordnungen eines Datensatzes). .
Wenn Sie die Einschränkungen von "comparison sort" umgehen und eine differenziertere Frage zu einem Datenelement stellen können, zum Beispiel "Was ist die Basis 10 radix dieser Daten", dann können Sie eine beliebige Anzahl von linearen finden Zeitsortier-Algorithmen benötigen sie nur mehr Speicher.
Dies ist ein Time-Space-Trade-Off. Comparason-Sortierung benötigt wenig oder keinen RAM und läuft in N * log (n) -Zeit. Radix-Sortierung (zum Beispiel) läuft in O (n) Zeit UND O (Log (Radix)) Speicher.
Können Sie die Frage noch einmal überprüfen? N gegen n? [0..n^31] gegen [0..2^31] gegen [0..2^32-1]? –
@danbruc - Guter Punkt. Auch Revision 1 sagt [0..n^3-1] - warum ist es [0..n^31] jetzt? –
Ich habe keine Ahnung, warum sich das geändert hat. Ich kann mich nicht erinnern, jemals aktualisiert zu haben. –