4. Prozedurales Programmieren
4. Prozedurales Programmieren
4. Prozedurales Programmieren
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Quicksort<br />
Algorithmische Grundidee:<br />
• Wähle einen beliebigen Datensatz mit Schlüssel k<br />
aus, das sogenannte Pivotelement.<br />
• Teile die Liste in zwei Teile:<br />
- 1. Teil enthält alle Datensätze mit Schlüsseln < k<br />
- 2. Teil enthält die Datensätze mit Schlüsseln ≥ k<br />
• Wende quicksort rekursiv auf die Teillisten an.<br />
• Hänge die resultierenden Listen und das Pivotelement<br />
zusammen.<br />
Funktionale Fassung:<br />
fun qsort [] = nil<br />
| qsort ((pk,ps)::rest) =<br />
let val (below,above) = split pk rest in<br />
end<br />
qsort below @[(pk,ps)]@ qsort above<br />
and split p [] = ([],[])<br />
| split p ((xk,xs)::xr) =<br />
let val (below, above) = split p xr in<br />
end<br />
if xk < p then ((xk,xs)::below,above)<br />
else (below,(xk,xs)::above)<br />
0<strong>4.</strong>12.08 © A. Poetzsch-Heffter, TU Kaiserslautern<br />
134