Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:q1:algorithmen-rekursion:l6-ersatzleistung

Klausurersatzleistung

Allgemeine Informationen zur Klausurersatzleistung
In der Klausurersatzleistung wird das Thema Sortieralgorithmen behandelt.

Die Note setzt sich aus zwei Teilen zusammen:

  1. Implementierung des Sortieralgorithmus in Processing mit Visualisierung ($\frac{1}{3}$ der Punkte)
  2. Schriftliche Ausarbeitung zum Sortieralgorithmus ($\frac{2}{3}$ der Punkte)

Alle nötigen Informationen zu den Sortieralgorithmen könnt ihr euch im Leitprogramm Sortierverfahren (PDF) erarbeiten. Weitere Informationen findet ihr auf inf-schule.de. Eventuell sind an manchen Stellen zusätzliche Quellen nötig, diese müsst ihr einerseits selbst recherchieren und andererseits auch entsprechend zitieren / angeben.

Implementierung

Die Visualisierung der einzelnen Schritte ist nicht ganz trivial. Hierfür werden Threads benötigt, die im Grundkurs nicht thematisiert werden. In der Hilfe-Box unten (aufklappen!) findet ihr zwei Java-Dateien, die ihr als Grundlage verwenden sollt. Erstellt in Processing einen neuen Sketch und kopiert die Sketch-Datei da hinein. Erstellt dann einen neuen Tab und kopiert die SortingAlgorithm-Datei dort hinein. Diese beiden Dateien müsst ihr weder verstehen noch verändern.

Eure eigene Implementation eines Sortier-Algorithmus erstellt ihr in einem eigenen Tab mit der folgenden Vorlage:

class SortingAlgorithmImplementation extends SortingAlgorithm {
  public void sort() { 
    // Hier kommt eure Implementierung hin
  }
}

Ihr habt zwei Hilfs-Methoden zur Verfügung, die ihr für das korrekte Funktionieren der Visualisierung auch verwenden müsst:

  • Die Methode int compare(int idxA, int idxB) vergleicht die Array-Einträge an den Stellen idxA und idxB und liefert folgende Rückgabewerte:
    • Rückgabewert > 0, wenn array[idxA] > array[idxB]
    • Rückgabewert < 0, wenn array[idxA] < array[idxB]
    • Rückgabewert 0, wenn array[idxA] = array[idxB]
  • Die Methode void swap(int idxA, int idxB) vertauscht die beiden Array-Einträge an den Stellen idxA und idxB.

Zusätzlich könnt ihr euch noch Marker definieren, die z.B. den bereits sortierten Bereich kennzeichnen. Hierzu könnt ihr die folgenden Methoden verwenden:

  • Die Methode void marker(String name, color col) erstellt einen neuen Marker mit dem angegebenen Namen und Farbe
  • Die Methode void mark(String name, int idx) platziert den Marker mit dem angegebenen Namen am angegebenen Index
  • Die Methode void unmark(String name) löscht den Marker mit dem angegebenen Namen

Im Interface habt ihr die folgenden Tastenkürzel zur Verfügung:

  • 0 - 4 stellen die Geschwindigkeit ein, mit dem der Sortieralgorithmus abläuft (0 = am schnellsten, 4 = am langsamsten)
  • r erstellt einen neuen Zufalls-Array, wenn die Simulation nicht gerade läuft.
  • Leertaste startet die Simulation.

Eine (offensichtlich falsche) Beispielimplementierung für euren Sortier-Algorithmus könnte z.B. so aussehen wie unten. Beachtet im Video die Marker am unteren Bildschirmrand:

  • Rote Punkte markieren immer, welche beiden Elemente gerade mit swap getauscht werden.
  • Grüne Punkte markieren immer, welche beiden Elemente gerade mit compare verglichen werden.
  • Die anderen Punkte sind eure eigenen Marker.
class SortingAlgorithmImplementation extends SortingAlgorithm {
  public void sort() {
    marker("Mitte", #FFFF00);
 
    mark("Mitte", data.length / 2);
 
    if (compare(0, 1) > 0) {
      swap(0, 1);
    }
 
    unmark("Mitte");
 
    // jetzt ist fertig sortiert, oder?! 
  }
}
Ausarbeitung

Zusätzlich zur Implementierung muss eine schriftliche Ausarbeitung angefertigt werden. Der Aufbau der Ausarbeitung besteht aus folgenden Punkten:

  1. Deckblatt
  2. Funktionsweise des Sortieralgorithmus
  3. Analyse des Algorithmus bezüglich best- und worst-case (Leitprogramm ab S. 56)
  4. Quellenangabe

Der Umfang der Ausarbeitung beträgt mindestens 2 bis maximal 3 Seiten.

Die Form der Ausarbeitung orientiert sich an denen einer wissenschaftlichen Hausarbeit. Näheres dazu findet ihr hier (PDF).

Bewertungskriterien Implementierung
ausführliche Kommentare 3
korrekte Funktion 3
korrekte Visualisierung 3
Gesamt 9
Bewertungskriterien Ausarbeitung
Gesamteindruck und formales Äußeres
Werden die gültigen Vorgaben zur Gestaltung einer wissenschaftlichen Arbeit eingehalten? (Deckblatt, Inhaltsverzeichnis/ Gliederung, Literaturliste) 1
Sind die Zitate exakt wiedergegeben, mit genauer Quellenangabe? 1
Zeigt die Arbeit insgesamt ein einheitliches Layout? 1
Beschreibung des Algorithmus
Wird der Algorithmus in der Ausarbeitung korrekt beschrieben 8
Werden Randfälle (z.B. vorsortierte Liste) beachtet? 2
Analyse des Algorithmus
Laufzeitanalyse 5
Gesamt 18
info/sek-ii/q1/algorithmen-rekursion/l6-ersatzleistung.txt · Zuletzt geändert: 2021-12-13 13:27 von christian.weber