Selectionsort (Sortieren durch Auswählen) ist ein einfaches Sortierverfahren. Allerdings hat Selectionsort wie die Verfahren Insertionsort, Bubblesort und Odd-even Transposition Sort eine Zeitkomplexität von Θ(n2), damit ist es für größere Datenmengen nicht geeignet.
Selectionsort lässt sich als Sortiernetz implementieren.
Gegeben sei eine Datenfolge a[0], ..., a[n-1]. Der Grundgedanke von Selectionsort besteht darin, zunächst das Element a[0] mit allen folgenden Elementen a[1], ..., a[n-1] zu vergleichen und, wenn dort ein kleineres Element als a[0] auftritt, dieses mit a[0] zu vertauschen. Auf diese Weise enthält a[0] immer das Minimum der bis dahin untersuchten Elemente.
Anschließend wird a[1] mit allen folgenden Elementen verglichen usw.
Besteht die Folge aus n Elementen, so ist die Folge nach n-1 Durchläufen sortiert.
Algorithmus Selectionsort
Eingabe:
Datenfolge a[0], ..., a[n-1]
Ausgabe:
die sortierte Folge
Methode:
Es folgt die Implementierung als Programm. Die Funktion selectionSort ist in einer Klasse SelectionSorter gekapselt.
Mit der Anweisung
wird ein Objekt vom Typ SelectionSorter erzeugt. Mit
kann anschließend ein Array b sortiert werden.
Das in Bild 1 dargestellte Sortiernetz realisiert das Verfahren Selectionsort.
Bild 1: Sortiernetz Selectionsort für n = 6
Die Anzahl der Vergleiche, die Selectionsort zum Sortieren einer Datenfolge der Länge n benötigt, beträgt
n-1 + n-2 + ... + 1 | = |
|
∈ Θ(n2). |
Weiter mit: [Odd-even Transposition Sort] oder [up]