04.10.2013 Aufrufe

Überblick 5.1 Sequentielles Suchen

Überblick 5.1 Sequentielles Suchen

Überblick 5.1 Sequentielles Suchen

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.

… Externer Merge Sort …<br />

• Externer Sortieralgorithmus, basierend auf dem Prinzip des Merge Sort:<br />

– Initiale Phase:<br />

Erzeuge im Hauptspeicher initiale Läufe der Länge m (evtl. weniger<br />

Elemente im letzten Lauf) und speichere die Läufe in Datei f.<br />

– Kopierphase (Copy):<br />

Kopiere die Hälfte der Läufe von f in Datei g, die andere Hälfte in<br />

Datei h.<br />

– Verschmelzungsphase (Merge):<br />

Verschmelze jeden Lauf von g mit genau einem Lauf von h und<br />

schreibe den resultierenden Lauf nach f.<br />

– Wiederhole Kopier- und Verschmelzungsphase, bis f nur noch einen<br />

einzigen Lauf enthält.<br />

© Klaus Hinrichs Informatik II – <strong>Suchen</strong> und Sortieren<br />

… Externer Merge Sort<br />

• Realisierung der initialen Phase:<br />

– Lese aus Eingabedatei e die m Elemente e r·m+1 , e r·m+2 , …, e r·m+m in<br />

den Puffer (r = 0, 1, …).<br />

– Sortiere die Elemente im Puffer mit einem internen Sortierverfahren<br />

(z.B. Quicksort).<br />

– Schreibe den so erzeugten r-ten Lauf in die Datei f, die den gleichen<br />

physischen Speicherbereich belegen kann wie die ursprüngliche<br />

Datei e.<br />

$ f ist partiell sortiert: " k, r · m + 1 ! k < r · m + m: f k ! f k+1<br />

• Jeder Copy-Merge-Zyklus halbiert die Anzahl Läufe:<br />

copy<br />

g: s/2 Läufe<br />

f: s Läufe f: s/2 Läufe<br />

h: s/2 Läufe<br />

© Klaus Hinrichs Informatik II – <strong>Suchen</strong> und Sortieren<br />

merge<br />

Nach &log 2 (n/m)' Copy-Merge-Zyklen besteht f aus einem einzigen<br />

Lauf, der die sortierte Folge aller Elemente darstellt.<br />

5-59<br />

5-60

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!