it-swarm.com.de

Was bedeutet es für einen Sortieralgorithmus, "stabil" zu sein?

Beim Lesen über verschiedene Sortieralgorithmen habe ich gesehen, dass einige "stabil" sind und andere nicht. Was bedeutet das und welche Kompromisse sind auf dieser Basis bei der Auswahl eines Algorithmus erforderlich?

44
Daenyth

Eine stabile Sortierung ist eine Sortierung, bei der die ursprüngliche Reihenfolge des Eingabesatzes beibehalten wird wobei der Vergleichsalgorithmus nicht zwischen zwei oder mehr Elementen unterscheidet.

Stellen Sie sich einen Sortieralgorithmus vor, der Karten nach Rang sortiert, jedoch nicht nach Farbe. Die stabile Sortierung garantiert, dass die ursprüngliche Reihenfolge der Karten mit demselben Rang erhalten bleibt. die instabile Sortierung wird nicht.

enter image description here

90
Robert Harvey

Stabile Algorithmen behalten die relative Reihenfolge der Elemente bei.

Ein stabiler Sortieralgorithmus behält also die relative Reihenfolge der Werte bei, die als gleich verglichen werden.

Stellen Sie sich einen Sortieralgorithmus vor, bei dem wir eine Sammlung von 2D-Punkten basierend auf ihrer X-Dimension sortieren.

Zu sortierende Sammlung: {(6, 3), (5, 5), (6, 1), (1, 3)}

Stabil sortiert: {(1, 3), (5, 5), (6, 3), (6, 1)}

Normal sortiert: Entweder {(1, 3), (5, 5), (6, 3), (6, 1)} oder {(1, 3), (5, 5), (6, 1), (6, 3)}


Was den Kompromiss betrifft ... nun, eine stabile Sortierung ist weniger effizient, aber manchmal braucht man sie.

Wenn ein Benutzer beispielsweise auf die Kopfzeile einer Spalte klickt, um Werte in einer Benutzeroberfläche zu sortieren, ist zu erwarten, dass seine vorherige Sortierreihenfolge bei gleichen Werten verwendet wird.

26
QuestionC