18.01.2015 Aufrufe

Sortieren durch Mischen: Mergesort - Informatik in der Oberstufe

Sortieren durch Mischen: Mergesort - Informatik in der Oberstufe

Sortieren durch Mischen: Mergesort - Informatik in der Oberstufe

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.

<strong>Informatik</strong> 12 mit Java: <strong>Sortieren</strong> <strong>durch</strong> <strong>Mischen</strong> (<strong>Mergesort</strong>)<br />

Gierhardt<br />

Allgeme<strong>in</strong>es<br />

In <strong>der</strong> Praxis kommt sehr häufig das Problem vor, dass große sortierte Datenbestände <strong>in</strong><br />

zwei Dateien zusammengefasst und sortiert <strong>in</strong> e<strong>in</strong>e zusammenfassende Datei geschrieben<br />

werden müssen. Beispiel: Zwei Banken fusionieren und die sortierten Kundendaten bei<strong>der</strong><br />

Institute werden <strong>in</strong> e<strong>in</strong>er neuen Datei zusammen gefasst. E<strong>in</strong>e e<strong>in</strong>zelne Datei kann<br />

dabei so groß se<strong>in</strong>, dass sie nicht <strong>in</strong> den Hauptspeicher e<strong>in</strong>es Computers passt. Man liest<br />

dann die beiden Dateien datensatzweise vom Anfang bis zum Ende und schreibt jeweils<br />

das kle<strong>in</strong>ste Element <strong>in</strong> die neue Datei. Diesen Vorgang bezeichnet man als <strong>Mischen</strong>.<br />

Der Begriff hat nichts mit dem <strong>Mischen</strong> bei e<strong>in</strong>em Kartenspiel, was ja e<strong>in</strong>er Rückgängigmachung<br />

<strong>der</strong> Sortierung entspricht, zu tun.<br />

Das <strong>Mischen</strong> kann auch bei <strong>der</strong> <strong>in</strong>ternen Sortierung von Fel<strong>der</strong>n benutzt werden.<br />

Idee zum Algorithmus<br />

Man teilt das Feld <strong>in</strong> zwei Teile, sortiert diese e<strong>in</strong>zeln und mischt die beiden Teile wie<strong>der</strong><br />

zum Gesamtfeld zusammen. Nach dem gleichen Pr<strong>in</strong>zip sortiert man die Teilfel<strong>der</strong><br />

rekursiv, bis auf <strong>der</strong> Ebene von Fel<strong>der</strong>n mit nur e<strong>in</strong>em Element nur noch das <strong>Mischen</strong><br />

übrigbleibt. Das Pr<strong>in</strong>zip wird <strong>in</strong> <strong>der</strong> folgenden Graphik dargestellt:<br />

1


Programmierung<br />

Für das <strong>Mischen</strong> wird e<strong>in</strong> gleichgroßes Hilfsfeld benötigt. Die sortierten Teile werden <strong>in</strong><br />

das Hilfsfeld geschrieben und daraus zurück <strong>in</strong> das eigentliche Feld gemischt. Dabei zeigt<br />

es sich, dass das <strong>Mischen</strong> deutlich e<strong>in</strong>facher zu formulieren ist, wenn man den zweiten<br />

Teil umgekehrt sortiert <strong>in</strong> das Hilfsfeld schreibt.<br />

Grobformulierung des Algorithmus’:<br />

Sortiere von l<strong>in</strong>ks bis rechts<br />

• Sortiere von l<strong>in</strong>ks bis mitte.<br />

• Sortiere von mitte+1 bis rechts.<br />

• Schreibe l<strong>in</strong>ken Teil <strong>in</strong> das Hilfsfeld.<br />

• Schreibe rechten Teil umgekehrt <strong>in</strong> das Hilfsfeld.<br />

• Schreibe <strong>durch</strong> Mischung die beiden Teile aus dem Hilfsfeld zurück <strong>in</strong>s Feld.<br />

Formuliere diesen rekursiven Algorithmus als Java-Methode.<br />

Testphase und Präsentation<br />

Teste den Algorithmus nicht nur an Fel<strong>der</strong>n mit zufälligen Inhalten, son<strong>der</strong>n auch an<br />

fast schon“ sortierten Fel<strong>der</strong>n und umgekehrt sortierten Fel<strong>der</strong>n. Stelle das Zeitverhalten<br />

des Algorithmus graphisch dar und stelle fest, wie die benötigte Zeit von <strong>der</strong><br />

”<br />

Anzahl <strong>der</strong> Elemente n abhängt. Vergleiche die verschiedenen Fälle mit den an<strong>der</strong>en<br />

Sortieralgorithmen.<br />

Die Messergebnisse aller bisher behandelten Sortieralgorithmen sollen <strong>in</strong> e<strong>in</strong>er HTML-<br />

Datei geeignet dargestellt bzw. präsentiert werden.<br />

2

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!