1 Sortierverfahren Einleitung Wir beschäftigen uns heute mit einfachen Sortierverfahren, also mit algorithmischen Lösungen für das Problem, eine ungeordnete Liste mit gleichartigen Elementen (gleicher Datentyp) in eine geordnete Reihenfolge zu bringen. Für die Lösung des Sortier- Problems gibt es ziemlich viele unterschiedliche Strategien, viel mehr als für die Suche eines Elements in einer Liste. Wir werden uns zunächst mit den drei typischsten Einfachen Verfahren auseinandersetzen und später noch zwei effizientere Herangehensweisen kennen lernen. Arbeitsweise Zunächst wird sich jede(r) von Ihnen mit einem der drei einfachen Sortierverfahren (A, B, oder C) auseinandersetzte, Sie machen sich also zum Experten für dieses Verfahren. Im Anschluss gibt es Aufgaben für Expertengruppen (alle, die sich dasselbe Verfahren angeschaut haben) und welche für Mischgruppen (hier sollte mindestens ein Experte für jedes Verfahren vertreten sein). Es wäre mir lieb, wenn Sie sich an die vorgegebenen Organisationsformen halten würden d.h. zunächst in Einzelarbeit versuchen, den jeweiligen Ansatz zu verstehen und dann gemeinsam in produktiver Gruppenarbeit die schwierigeren Probleme anzugehen. Dazu gehört auch, dass Sie sich die Lösungen tatsächlich selbst erarbeiten Tante Google fragen ist hier weder effizient noch nachhaltig. Falls Sie zu irgendeinem Zeitpunkt Einzeln oder als Gruppe zu dem Ergebnis kommen, dass Sie zusätzliche Information benötigen, dann sehen Sie sich doch bitte im Ordner Zusatzmaterial SuchenUndSortieren um. Hier finden Sie verschiedenen Ressourcen, die ich während der Vorbereitung benutzt oder zumindest konsultiert habe. Wichtig ist allerdings, dass Sie selektiv vorgehen und nur nach Informationen zu einer bestimmten Fragestellung suchen. Lernziele 1. Sie kennen und verstehen drei einfache Sortierverfahren und können die zugrundeliegenden Strategien beschreiben 2. Sie können qualifizierte Aussagen zur (Zeit- )Komplexität der drei Verfahren machen, anhand spezifischer Beispiele und im Allgemeinen Lösungen Bitte halten Sie Ihre Lösungen zu den Aufgaben im folgenden Abschnitt schriftlich fest, entweder elektronisch oder auf Papier. Diese Notizen sind wichtig für Ihre Prüfungsvorbereitung.
2 Aufgaben 1. Im Anhang Strategien finden Sie Beispiele für die Anwendung der drei Sortierverfahren. Sehen Sie sich das Beispiel für Ihr Verfahren genau an und versuchen Sie die dahinterliegende Strategie abzuleiten. a) Formulieren Sie diese extrahierte Strategie zunächst in Stichworten, b) dann übersetzen Sie das Ganze in ein Struktogramm. Tipp: Es könnte helfen, das Verfahren mit umgedrehten Spielkarten nachzuvollziehen. 2. Schauen Sie sich den Java- Code im Anhang Implementationen an. a) Finden Sie heraus, welcher Code zu ihrem Verfahren gehört b) Vergleichen Sie den Code mit Ihrem Struktogramm, verbessern Sie dieses gegebenenfalls c) Beschreiben Sie ihr Verfahren in maximal drei einfachen Sätzen d) Wie viele Vergleiche sind nötig, um die Liste {3,5,1,7,4,6} mit Ihrem Verfahren in aufsteigender Reihenfolge zu sortieren? e) Gibt es neben den Vergleichen noch einen Faktor, der sich auf die asymptotische Laufzeit ( = Zeitkomplexität) Ihres Verfahrens auswirken könnte? Welchen? 3. Überprüfen Sie Ihre bisherigen Ergebnisse mithilfe des Applets xsortlab (http://math.hws.edu/tmcm/java/xsortlab/) a) Wie heisst Ihr Verfahren? 4. Finden Sie sich in Expertengruppen zusammen und stellen Sie sicher, dass Ihre Ergebnisse übereinstimmen. a) Erstellen Sie drei Listen, in denen Sie die Zahlen 1-10 jeweils so anordnen, dass Sie für Ihr Verfahren einen best, worst, oder average case darstellen. Geben Sie jeweils an, wie viele Bearbeitungsschritte nötig sind b) Versuchen Sie gemeinsam, die Zeitkomplexität für Ihr Verfahren abzuschätzen (O- Notation & Begründung der Herleitung) c) Schätzen Sie ab, wie viele Vergleiche für eine zufällig geordnete Liste mit 10000 Elementen nötig sind. Überprüfen Sie Ihr Ergebnis mit xsortlab (Timed Sort) 5. Finden Sie sich in Mischgruppen zusammen und erklären Sie Ihren Mitschülern, was Sie bis jetzt bezüglich Ihres Verfahrens herausgefunden haben. Anschliessend diskutieren Sie, welches der drei Verfahren für zufällig geordnete und sehr lange Listen am effizientesten ist a) Notieren Sie Urteil & Begründung b) Kann die Anwendung eines der weniger effizienten Verfahren manchmal trotzdem sinnvoll sein? Notieren Sie wann und warum 6. Überprüfen Sie ihre Ergebnisse mithilfe dieser Applets: http://www.iti.fh- flensburg.de/lang/algorithmen/sortieren/sortcontest/sortcontest.htm und http://www.gf- webdesign.de/sortieralgorithmen/sortieralgorithmen.htm
EF Informatik, Arbeitsblatt Einfache Sortierverfahren 3 Anhang Strategien Verfahren A Tipp: Wie verändert sich der sortierte Teil jeder Zeile?
EF Informatik, Arbeitsblatt Einfache Sortierverfahren 4 Verfahren B Tipp: Ab welchem Schritt steht welche Karte an der richtigen Position?
5 Verfahren C Tipp: Welche Karten wandern nach rechts und wie weit? (Der Übergang von einer Zeile zur nächsten entspricht hier zwei Schritten des Algorithmus).
6 Anhang Implementationen Code 1
7 Code 2
8 Code 3