Sortieralgorithmen in HaskellSo jetzt schreib ich mal ne kleine Zusammenfassung aller Sortieralgorithmen in Haskell die ich so kenne... Kann man ja immer gebrauchen ;-) Insertion SortDie Funktion insert fügt ein Element in eine bereits sortierte Liste an der richtigen Stelle ein. insertsort sortiert eine Liste durch den sukzessiven Aufbau einer sortierten Liste. |
Listing 1 - InsertionSort.hs:
|
Quick SortDie Funktion quicksort wählt ein Element aus einer unsortierten Liste aus (Pivotelement z.B. das erste) und zerlegt die Liste in zwei Teillisten. Die eine Liste enthält dabei alle kleineren Elemente, die andere Liste alle größeren Elemente. Diese werden rekursiv nach demselben Muster sortiert. Zum Schluss fügt quicksort diese drei Teile in der richtigen Reihenfolge wieder zusammen.Die noch unsortierten Teillisten werden über denselben Algorithmus mittels Rekursion in noch kleinere Teillisten zerlegt und, sobald nur noch Listen mit je einem Element vorhanden sind, wieder zusammengesetzt. |
Listing 2 - QuickSort.hs:
|
Merge SortDie Hillfs-Funktion merge fügt zwei sortierte Listen zu einer sortierten Liste zusammen.Und mergesort halbiert eine Liste, sortiert diese rekursiv nach demselben Verfahren und fügt die dann sortierten beiden Teillisten zu einer sortierten Liste mit merge (engl. To merge) zusammen. |
Listing 3 - MergeSort.hs:
|
Bubble SortDie Hilfs-Funktion bubble durchläuft eine Liste und vertauscht dabei ggf. zwei benachbarte Elemente (so dass das größere rechts steht). Nach dem einmaligen Aufruf von bubble befindet sich das größte Element der Liste am Ende der Liste. Die Funktion bubblesort ruft die Funktion bubble so oft auf, bis die Gesamtliste sortiert ist. |
Listing 4 - BubbleSort.hs:
|
Selection SortSelection-Sort ist Sortieren durch Auswählen. Es wird (rekursiv) das kleinste Element gesucht und vor die (noch zu sortierende) Liste gestellt, aus der genau dieses Element entfernt wird.Sobald das vorderste Element gleich dem Gesuchten ist, gibt remel die Restliste zurück. Es wird
also das erste Auftreten des Elements gefunden – genau wie minel das Kleinste findet. |
Listing 5 - SelectionSort.hs:
|