Beim Lesen verschiedener Sortieralgorithmen wurde erwähnt, dass einige "stabil" sind und andere nicht. Was bedeutet das und welche Kompromisse sind auf dieser Basis bei der Auswahl eines Algorithmus zu beachten?
Beim Lesen verschiedener Sortieralgorithmen wurde erwähnt, dass einige "stabil" sind und andere nicht. Was bedeutet das und welche Kompromisse sind auf dieser Basis bei der Auswahl eines Algorithmus zu beachten?
Antworten:
Bei einer stabilen Sortierung wird die ursprüngliche Reihenfolge der Eingabemenge beibehalten, bei der der Vergleichsalgorithmus nicht zwischen zwei oder mehr Elementen unterscheidet.
Betrachten Sie einen Sortieralgorithmus, der Karten nach Rang sortiert , aber nicht nach Farbe. Die stabile Sortierung garantiert, dass die ursprüngliche Reihenfolge der Karten mit demselben Rang erhalten bleibt. die instabile Sorte wird es nicht.
Stabile Algorithmen behalten die relative Reihenfolge der Elemente bei.
Ein stabiler Sortieralgorithmus behält also die relative Reihenfolge der vergleichbaren Werte bei.
Stellen Sie sich einen Sortieralgorithmus vor, bei dem wir eine Sammlung von 2D-Punkten basierend auf ihrer X-Dimension sortieren.
Sammlung sortiert werden: {(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 angeht ... Nun, eine stabile Sortierung ist weniger effizient, aber manchmal braucht man sie.
Wenn ein Benutzer beispielsweise auf eine Spaltenüberschrift klickt, um die Werte in einer Benutzeroberfläche zu sortieren, ist zu erwarten, dass seine vorherige Sortierreihenfolge bei gleichen Werten verwendet wird.