Frage

Ich programmiere eine Funktion für einen TINspire , so kann ich ‚t verwenden, um den von innen builtins einer Funktion. Was ist die Regel effizienter Algorithmus für eine Liste von Zahlen Sortierung ohne die Änderung der Liste selbst? (Rekursion und list-Splitting ist Freiwild, wie die allgemeine Verwendung von math.)

War es hilfreich?

Lösung

Mergesort ist unkompliziert, einfach, effizient und stabil. Die Liste verteilen, sortieren rekursiv, und die Ergebnisse zusammenführen

Um genauer zu sein, nimmt mergesort O (N log N), die sich asymptotisch optimal ist. Auch in der Praxis (mit beiden Algorithmen zu sortieren kurzen Sublisten mit einer Spezial-Art modifizieren), mergesort kann ein enger Konkurrent sein, um den quicksort in den C / C ++ Standard-Bibliotheken verwendet, modifiziert werden.

Edit:. Im Gegensatz zu in-Place-Sorten wie quicksort und Insertionsort, mergesort erfordert Hilfsspeicher, und ist am einfachsten durch implementieren Kopieren statt tauschen

Andere Tipps

Timsort verwendet wird, in Python und Java SE 7. Es vereint das Beste von Mergesort und Insertionsort. Insertion Sort ist O (n ^ 2), aber mit kleinen Listen von Zahlen ist es schneller als Mergesort!

So können Sie diese als generischen Sortieralgorithmus hier wie angegeben verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top