Prof. Dr. R. Laue                                                                                                                                  SS98
                                Informatik II
                                Übungsblatt 3
                                Abgabe: 28.05.98 bis 10.00 Uhr
 
URL:         /axel/informatik2_ss98_blatt3.html
Dieses  Übungsblatt ist in Zweiergruppen  zu bearbeiten.

Aufgabe 7 (10 Programmierpunkte - Abgabe per email bis 4.6. 10.00 Uhr)
Schreiben Sie eine C Funktion mit dem Namen my_countsort_matrikelnummer(), welche eine Zeichenkette sortiert.
Die Deklaration der Funktion ist:

int my_sort_matrikelnummer(char *feld)

Ein zweiter Parameter für die Länge ist nicht nötig, da eine Zeichenkette definitionsgemäß mit dem Wert '\0' endet. Beim Namen der Routine ist matrikelnummer durch eine Ihrer Matrikelnummern zu ersetzen. Folgendes C Programm, bzw deren main-routine, soll nach Anpassung der Matrikelnummer als Testfunktion verwendet werden können.

 

Dabei wurde in diesem Beispiel die Systemfunktion qsort() verwendet. Sie sollen eine eigene Routine, die countsort verwendet, ohne Aufruf von Systemsortierroutinen schreiben. Um Speicher für die lokalen Hilfsfelder innerhalb von countsort zu bekommen empfiehlt sich die Routine calloc() um Speicher zu bekommen. Dieser dynamische Speicher muß natürlich mit free() vor dem Verlassen  der Sortierroutine wieder freigegeben werden.

Aufgabe 8 (3+ 4 + 3 Punkte)
Formulieren Sie den Algorithmus countsort  mittels eines Flussdiagramms. (3 Punkte)  Führen Sie den countsort mit dem Feld der Länge 14 durch, welches sie durch die Verknüpfung Ihrer beiden Matrikelnummern bekommen. Zulässige Eintrage im Feld sind die Ziffern 0-9. (4 Punkte) Ist der Algorithmus countsort stabil? Beweis. (3 Punkte)

Aufgabe 9 (6 Punkte)
Man konstruiere eine Eingabefolge der Lange 15, bei der  Heapsort  maximale Schrittzahl benötigt. Beweis.