Stabilität (Sortierverfahren)

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Stabil (Sortierverfahren))
Wechseln zu: Navigation, Suche

Ein stabiles Sortierverfahren ist ein Sortieralgorithmus, der die Reihenfolge der Datensätze, deren Sortierschlüssel gleich sind, bewahrt.

Wenn beispielsweise eine Liste alphabetisch sortierter Personendateien nach dem Geburtsdatum neu sortiert wird, dann bleiben unter einem stabilen Sortierverfahren alle Personen mit gleichem Geburtsdatum alphabetisch sortiert.

Will man mit einem instabilen Sortierverfahren, etwa Quicksort, ein Array sortieren, dabei aber die Reihenfolge der Datensätze mit gleichem Schlüssel untereinander unverändert lassen, so kann man sich damit behelfen, dass man in einem zusätzlichen Array die ursprüngliche Positionen aller Elemente speichert und im Fall, dass Elemente mit gleichen Schlüsseln vorliegen, darauf zurückgreift. Normalerweise benutzt man aber stattdessen meist ein stabiles Sortierverfahren, z. B. Bucketsort, Insertionsort oder Mergesort.

Stabile und instabile Sortierverfahren sortieren eine Datenmenge gleich, wenn der Sortierschlüssel einen Vergleich über den gesamten Datensatz vornimmt und verschiedene Datensätze auch ungleich bewertet. Eine Menge von Zahlen oder Namen etwa kann man mit einem stabilen oder instabilen Sortierverfahren sortieren, das Ergebnis ist immer gleich:

Stabiles oder instabiles Sortierverfahren:

  4       1
  3       2
  5       3
  3   →   3 
  2       3
  1       4
  3       5 

Stabiles oder instabiles Sortierverfahren (alphabetisch):

  Carla        Annette
  Annette  →   Birgit
  Birgit       Carla    

Kombiniert man jedoch etwa Namen und Zahlen zu je einem Datensatz und sortiert nur nach einem Teilschlüssel, etwa nach Zahlen, dann existieren bei gleichen Schlüsseln verschiedene Möglichkeiten für die Reihenfolge. Ein stabiles Verfahren wählt diejenige Reihenfolge, die bei gleichen Schlüsseln die Originalreihenfolge der Namen beibehält, etwa

Stabiles Sortierverfahren nach Zahlen:

  1 Anton       1 Anton       
  4 Karl        1 Paul
  3 Otto        3 Otto
  5 Bernd   →   3 Herbert
  3 Herbert     4 Karl
  8 Alfred      5 Bernd
  1 Paul        8 Alfred

Instabiles Sortierverfahren nach Zahlen:

  1 Anton        1 Paul         1 Anton        1 Paul         1 Anton
  4 Karl         1 Anton        1 Paul         1 Anton        1 Paul
  3 Otto         3 Otto         3 Herbert      3 Herbert      3 Otto
  5 Bernd   →    3 Herbert oder 3 Otto    oder 3 Otto    oder 3 Herbert
  3 Herbert      4 Karl         4 Karl         4 Karl         4 Karl
  8 Alfred       5 Bernd        5 Bernd        5 Bernd        5 Bernd
  1 Paul         8 Alfred       8 Alfred       8 Alfred       8 Alfred

Bei instabiler Sortierung kann Paul vor Anton oder Herbert vor Otto stehen.

Beispiele für stabile Sortierverfahren:

Binary Tree Sort, Bubblesort, Countingsort, Cocktailsort, Gnomesort, Insertionsort, Mergesort, Radixsort

Beispiele für instabile Sortierverfahren:

Bogosort, Heapsort, Introsort, Quicksort, Shellsort, Smoothsort, Slowsort, Stoogesort, Selectionsort

Siehe auch: in-place

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Navigation
Mitmachen
Drucken/exportieren
Werkzeuge
In anderen Sprachen