Vergleich der Sortieralgorithmen

July 19

Mit buchstäblich Dutzende von Sortieralgorithmen zur Verfügung, bestimmen, welche mit Ihrem System am besten geeignet ist hängt Vergleiche von mehreren Faktoren ab, z. B. die Größe der Liste, die Geschwindigkeit oder die Komplexität des Algorithmus, und ob Sie einen Schlüssel zum Sortieren verwenden.

Komplexität

Die Komplexität des Sortier-Algorithmus wird von o (n) oder der "Order of n," gemessen, wobei n die Größe der Liste ist. Er misst, wie viele Pässe, die es braucht, um die Liste zu sortieren und berechnet seine beste, schlechteste und durchschnittliche Zeit, dies zu tun. Gemeinsamen Komplexität umfassen n als beste Fall für Arten wie Insertionsort und Shell-Sort, n Log n, (mit Logarithmus Base-2, kein Base-10), die die Komplexität für Merge Sort und Heapsort ist, und n ², die langsamer als beim ersten Mal und ist die Geschwindigkeit für Selectionsort.

-Bedingung

Manchmal wissen Sie, wie die unsortierten Elemente in einer Liste angeordnet werden: beispielsweise ob sie fast in umgekehrter Reihenfolge sortiert werden, oder eine Liste mit einigen Einzelstücke. Diese Kenntnisse können Sie einen effizienten Algorithmus sortieren auswählen. Beispielsweise hat mit Einfügen von Art zu Art eine Liste in umgekehrter Reihenfolge eine Betriebszeit von n ², während Heap Sort es schneller, in n Log n Mal tun kann. Auf einer Liste, die fast sortiert ist, ist Insertionsort schneller als Heap Sort. Wenn die Liste vollständig randomisierten Daten enthält, sortieren, wählen Sie ein Algorithmus mit einer durchschnittlichen RS Komplexität n log n Laufzeit, z. B. Heap sortieren, Quicksort oder zusammenführen.

Listengröße

Einige Algorithmen sind schwieriger als andere, zu verwenden, so dass den Algorithmus bestimmen, die, den Sie wählen, werden, die Anzahl der Elemente in einer Liste und wie oft Sie sortieren müssen helfen kann. Arten wie Insertionsort sind schnell und Arbeit gut, wenn kleineres Sortierung werden aufgelistet und sind einfach zu implementieren, aber sie sind langsam mit größeren Listen. Arten, die einen Teile und herrsche wie Quicksort und Merge-Sort-Algorithmus verwenden sind schwieriger zu implementieren, aber größere Listen sortieren sie schneller in durchschnittlichen Fällen.

Stabilität

Algorithmus-Stabilität beschreibt, ob die Art die Reihenfolge von Elementen basierend auf einem Sortier Schlüssel verwaltet. Zum Beispiel mit dem ersten Zeichen als Schlüssel für eine Liste mit "John", "Steve" und "Jim" in dieser Reihenfolge, ein stabiler Algorithmus die Liste sortiert "John", "Jim" und "Steve," während ein unstable Algorithmus kann oder kann nicht sortieren "Jim" vor "John." Merge Sort, Insertionsort und Blase Sortierung sind alle stabilen Algorithmen, Schale sortieren, Selectionsort und Heap Sort nicht.