16.09.2017 Aufrufe

Vorkurs Informatik

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

6.1 Beispiel: Sortieren einer Menge von Zahlen durch Mischen 95<br />

1 mischen(folge1,folge2)<br />

2<br />

3 n := Laenge von folge1 plus Laenge von folge2;<br />

4 folge := eine leere Folge;<br />

5<br />

6 Solange folge1 und folge2 nicht leer sind, fuehre aus:<br />

7<br />

8 Wenn das erste Element f 1 von folge1 nicht groesser als<br />

9 das erste Element f 2 von folge2 ist, dann<br />

10 fuege f 1 an folge an und entferne f 1 aus folge1;<br />

11 sonst<br />

12 fuege f 2 an folge an und entferne f 2 aus folge2;<br />

13<br />

14 Wenn folge1 leer ist, dann<br />

15 fuege folge2 an folge an;<br />

16<br />

17 Wenn folge2 leer ist, dann<br />

18 fuege folge1 an folge an;<br />

Pseudocode 6.1: Algorithmus „Sortieren durch Mischen“<br />

f1 von folge1 nicht größer als das erste Element f2 von folge2 ist. In diesem Fall wird f1 an die<br />

Ergebnisfolge folge angefügt und f1 aus folge1 entfernt (Zeile 10). Anderenfalls wird f2 an folge<br />

angefügt und aus folge2 entfernt (Zeile 12). Die Schleife endet, wenn folge1 oder folge2 leer ist.<br />

Die erste bedingte Anweisung nach der Schleife überprüft in der Bedingung, ob folge1 leer ist.<br />

In diesem Fall wird die ganze restliche Folge folge2 an folge angefügt (Zeile 15). Falls folge1<br />

nicht leer ist, wird in der zweiten bedingten Anweisung überprüft, ob folge2 leer ist. In diesem<br />

Fall wird folge1 an folge angefügt. Der Fall, dass beide Folgen leer sind, der jetzt noch übrig<br />

ist, muss nicht weiterbehandelt werden, da sich bereits alle Eingabeelemente in folge befinden.<br />

Das Anfügen von folge1 beziehungsweise folge2 an folge ist offensichtlich korrekt, da ja folge1<br />

beziehungsweise folge2 als bereits sortiert angenommen werden.<br />

Abbildung 6.3 illustriert dieses Verfahren an unserer Beispielfolge, die Zeilen der Tabelle entsprechen<br />

aufeinanderfolgenden Durchläufen der solange-Schleife. Die erste Spalte, überschrieben<br />

mit „Durchlauf“, nummeriert die Durchläufe. Drei weitere Spalten repräsentieren den aktuellen<br />

Zustand von folge1, folge2 und folge. In der ersten Zeile der Tabelle stehen die beiden<br />

Eingabefolgen sowie die Ergebnisfolge nach dem ersten Schritt. Da folge1 und folge2 beide<br />

nicht leer sind, wird der Rumpf der solange-Schleife ausgeführt. In der bedingten Anweisung im<br />

Rumpf wird getestet, ob das erste Element von folge1 nicht größer als das erste Element von folge2<br />

ist. Dies trifft offensichtlich in unserem Beispiel zu, da 3 nicht größer als 4 ist. Daher wird die<br />

Aktion der bedingten Anweisung durchgeführt, d. h. das erste Element von folge1, also 3, an die<br />

Ergebnisfolge angefügt. Dies ergibt die Folge, bestehend aus 3, die in der ersten Zeile der vierten<br />

Spalte in Abbildung 6.3 aufgeführt ist. Ferner gibt die durchzuführende Aktion der bedingten<br />

Anweisung an, dass f1, also 3, aus folge1 zu entfernen ist. Damit erhalten wir die Restfolgen in<br />

der zweiten und dritten Spalte der zweiten Zeile in Abbildung 6.3. Da beide Folgen immer noch

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!