Übungsaufgabe 6

Werbung
Informatik 2
Übung 6
SS 2003, Wolfgang Schreiner <[email protected]>
Abgabe 16.5.2002, 12:00
Name: ___________________________________
Mat.Nr:__________________________________
Punkte:_______
Die Übung ist im BSCW Folder "Informatik 2 (SS 2003)" als "Übung5.zip"
abzugeben und besteht aus
1. einem PDF Dokument,
2. dem Quellcode des Programms als Sammlung von .java Dateien,
3. dem Zielcode des Programms als Sammlung von .class Dateien.
Das PDF Dokument erhält das Ergebnis der Aufgabe bestehend aus
1. der Entwicklung ihres Lösungsansatzes,
2. dem kommentierten Quellcode,
3. der Testsuite.
Sortieren (100 Punkte)
Implementieren Sie generische Versionen der Sortiermethoden "Insertion Sort" und
"QuickSort". Verwenden Sie dazu die Schnittstelle java.lang.Comparable und
implementieren Sie die zwei folgenden Methoden:
static void insertSort(Comparable[] a);
static void quickSort(Comparable[] a);
Die Klasse Integer implementiert diese Schnittstelle, daher können Ihre Methoden
auf Integer-Feldern unmittelbar eingesetzt werden.
Schreiben Sie zum Testen Ihrer Methoden ein Programm Sort, das ein IntegerZufallsfeld der Länge N sortiert und die Laufzeit für die Sortierung ausdruckt. Das
Programm soll wie folgt verwendbar sein:
java Sort ( –insert | -quick ) [ -print ] N
In dieser Syntaxbeschreibung schließen die eckigen Klammern [ ... ] einen
optionalen Teil ein (er kann vorkommen oder auch nicht), der senkrechte Strich ...
| ... trennt zwei sich ausschließende Optionen (entweder der eine oder der andere
Teil kommt vor), die Klammern (...) dienen nur zur Gruppierung.
Die Beschreibung der Optionen ist wie folgt:
-insert: Verwendet den Insertion Sort Algorithmus.
-quick: Verwendet den QuickSort Algorithmus.
-print: Druckt das unsortierte und das sortierte Feld.
Beispiele für Aufrufe sind
java Sort –insert –print 100
17 97 12 3 5 ... 11
3 5 11 12 17 .. 97
Die Sortierung benötigte 30 ms.
java Sort –quick 100
Die Sortierung benötigte 10 ms.
Sie können Zeiten mit Hilfe der Klasse java.util.Date messen. Die Zuweisung
long now = (new Date()).getTime();
liefert in now die aktuelle Zeit in ms (von einem fixen Startpunkt in der
Vergangenheit an). Durch Ermittlung der aktuellen Zeit vor und nach der Sortierung
können Sie die Dauer der Sortierung ermitteln.
Messen Sie unter anderem die Zeiten für die Sortierung von Feldern der Länge 5000,
der Länge 10000 und der Länge 25000 mit beiden Methoden.
Herunterladen