17.12.2012 Aufrufe

4. Prozedurales Programmieren

4. Prozedurales Programmieren

4. Prozedurales Programmieren

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!