16.09.2017 Aufrufe

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.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!