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.