Vorkurs Informatik
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
6.1 Beispiel: Sortieren einer Menge von Zahlen durch Mischen 101<br />
folgenden while-Schleife werden die ersten nl Elemente von f in das Array hlinks kopiert<br />
(Zeile 9). Dieses Array wird nun sortiert, in dem die Funktion mischSort mit hlinks als Parameter<br />
aufgerufen wird (Zeile 12). Das Resultat wird in einem neuen Array flinks gespeichert,<br />
das auf der Zeile des Aufrufs deklariert wird.<br />
Analog wird mit dem Rest der Eingabefolge f verfahren. Diese wird in einem Array hrechts<br />
gespeichert, das zunächst deklariert wird. In der darauf folgenden while- Schleife erfolgt das<br />
Kopieren des Rests von f nach hrechts. Hierbei ist zu beachten, dass innerhalb der Anweisung<br />
hrechts[i] = f[nl+i] mit f[nl] begonnen wird (Zeile 16). Nach dem Kopieren wird<br />
wiederum mischSort, angewandt auf den Parameter hrechts, aufgerufen (Zeile 19). Das sortierte<br />
Ergebnis wird in einem neu deklarierten Array frechts gespeichert. Damit sind beide<br />
Teilfolgen sortiert.<br />
Die letzte Anweisung des if-Teils besteht im Mischen der beiden Folgen. Dies geschieht durch<br />
Aufrufen der Funktion mische mit den beiden Parametern flinks und frechts (Zeile 20).<br />
Das Resultat wird durch return an die Aufrufstelle von mischSort zurückgegeben.<br />
In dem Programm wird also das Sortieren der beiden Teilfolgen durch den Aufruf der Funktion<br />
mischSort für die beiden Teilfolgen geleistet. Die Programmierenden müssen sich hier keine<br />
weiteren Gedanken dazu machen, da die weitere Ausführung durch das Java-System übernommen<br />
wird.<br />
Die Abbildungen 6.5 und 6.6 visualisieren, was dabei vom Rechner geleistet werden muss. Ganz<br />
oben steht die unsortierte Eingabefolge, mit der die Funktion mischSort aufgerufen wird. Das<br />
Ergebnis dieses Aufrufs ist die sortierte Folge (Abbildung 6.5 a). Um diese zu erhalten, zerlegt<br />
mischSort die Eingabefolge in zwei Teilfolgen, 11,7,8,3,15 und 13,9,19,18,10,4, und ruft<br />
sich für beide erneut auf (Abbildung 6.5 b). Die Aufrufe geben die sortierten Teilfolgen zurück,<br />
die dann gemischt und anschließend zurückgegeben werden.<br />
Die Aufrufe von mischSort für 11,7,8,3,15 und 13,9,19,18,10,4 werden entsprechend abgearbeitet.<br />
Für die erste Teilfolge geschieht dies durch Zerlegen in zwei Teilfolgen 11,7 und<br />
8,3,15, mit denen mischSort jeweils wieder aufgerufen wird (Abbildung 6.5 c). Die beiden<br />
Aufrufe liefern die sortierten Teilfolgen, die dann gemischt werden.<br />
Entsprechend ist mit allen Aufrufen von mischSort zu verfahren. Falls die Eingabefolge bei<br />
einem Aufruf die Länge 1 hat, wird sie direkt zurückgegeben. Abbildung 6.6 zeigt die Eingaben<br />
und Ausgaben aller Aufrufe von mischSort auf einen Blick.<br />
Das Bild sieht recht komplex aus. Für Programmierende ist es jedoch nicht wichtig, den genauen<br />
Ablauf zu kennen. Sie können davon ausgehen, dass ein Aufruf einer Funktion, in unserem Fall<br />
mischSort, das korrekte Ergebnis zurückliefert.<br />
Um ein insgesamt ausführbares Programm zu erhalten, fehlt noch das Hauptprogramm main.<br />
Dieses bildet den letzten Bestandteil des Programms ProgrammMischSort (Quellcode 6.4). Die<br />
Blöcke der beiden Funktionen mische und mischSort sind aus Gründen der Übersichtlichkeit<br />
nur angedeutet, sie müssen aus den entsprechenden Quellcodes 6.2 und 6.3 übernommen werden,<br />
um das vollständige Programm zu erhalten.