faecher:informatik:oberstufe:algorithmen:sorting:insertionsort:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:algorithmen:sorting:insertionsort:start [08.02.2023 20:10] – [Beispiel] Frank Schiebelfaecher:informatik:oberstufe:algorithmen:sorting:insertionsort:start [06.02.2025 08:06] (aktuell) – [Beispiel] Frank Schiebel
Zeile 1: Zeile 1:
 ====== Insertion Sort ====== ====== Insertion Sort ======
  
-Während Selection Sort jeweils alle noich nicht bearbeiteten Elemente betrachtet hat, um das kleinste zu finden, orientiert sich **Insertion Sort** nach links: Es betrachtet jeweils ein Element und rückt dieses dann soweit nach links, bis es an seiner korrekten Position innerhalb der bislang betrachteten Elemente gelandet ist.+Während Selection Sort jeweils alle noch nicht bearbeiteten Elemente betrachtet hat, um das kleinste zu finden, orientiert sich **Insertion Sort** nach links: Es betrachtet jeweils ein Element und rückt dieses dann so weit nach links, bis es an seiner korrekten Position innerhalb der bislang betrachteten Elemente gelandet ist.
  
 <html> <html>
Zeile 18: Zeile 18:
  
   * Implementiere im Bluej-Projekt https://codeberg.org/qg-info-unterricht/algs4-sort-bluej Selectionsort.   * Implementiere im Bluej-Projekt https://codeberg.org/qg-info-unterricht/algs4-sort-bluej Selectionsort.
-  * Erzeuge mit Hilfe der ''draw''-Methode eine Veranschaulichung des Sortiervorgangs wie im Bild oben. Du muss dazu die Methode ''draw'' kopieren und anpassen, um die Färbung für Insertionsort korrekt zu erzeugen.+  * Erzeuge mithilfe der ''draw''-Methode eine Veranschaulichung des Sortiervorgangs wie im Bild oben. Du musst dazu die etwas angepasste Methode ''drawInsertion'' nutzen, um die Färbung für Insertionsort korrekt zu erzeugen.
  
 ---- ----
Zeile 24: Zeile 24:
 === (A2) === === (A2) ===
  
-wenn alle Elemente der zu sortierenden Liste denselben Sortier-Schlüssel haben welches Verfahren ist dann effizienterInsertion-Sort oder Selection-Sort? +Wenn alle Elemente der zu sortierenden Liste denselben Sortier-Schlüssel haben (die zu sortierende Liste also z. B. nur aus "aaaaaaa" besteht), welches Verfahren ist dann effizienterInsertion-Sort oder Selection-Sort? Begründe deine Antwort!
  
 ++++ Tipp |  ++++ Tipp | 
-Veranschauliche in beiden Verfahren das sortieren einer Zeichenkette aus gleichen Buchstaben und überlege dir, welches Verfahren effizienter ist.+Veranschauliche in beiden Verfahren das Sortieren einer Zeichenkette aus gleichen Buchstaben und überlege dir, welches Verfahren effizienter ist.
  
 {{ :faecher:informatik:oberstufe:algorithmen:sorting:insertionsort:insertion_aaa.png?400 |}} {{ :faecher:informatik:oberstufe:algorithmen:sorting:insertionsort:insertion_aaa.png?400 |}}
Zeile 34: Zeile 34:
  
 ++++ ++++
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (A3) ===
 +
 +<callout  type="info" icon="true">
 +Ein Sortieralgorithmus ist **stabil**, wenn er die ursprüngliche Reihenfolge von Elementen mit gleichem Schlüsselwert beibehält. 
 +
 +Das bedeutet, wenn zwei Elemente den gleichen Sortierschlüssel haben, bleibt ihre relative Position zueinander nach dem Sortieren unverändert.
 +
 +Diese Eigenschaft ist besonders wichtig, wenn:
 +
 +   * Datensätze nach mehreren Kriterien sortiert werden sollen
 +   * Die ursprüngliche Reihenfolge eine semantische Bedeutung hat
 +
 +Als Beispiel: Wenn wir eine Liste von Personen erst nach Alter und dann nach Namen sortieren, ist es oft wichtig, dass die ursprüngliche Reihenfolge bei gleichaltrigen Personen erhalten bleibt.
 +
 +Der Selectionsort-Algorithmus ist in seiner Grundform nicht stabil, da beim Vertauschen von Elementen im unsortierten Bereich die ursprüngliche Reihenfolge von Elementen mit gleichem Wert verändert werden kann - man kann Selectionsort jedoch auch stabil implementieren.
 +</callout>
 +
 +(a) Überprüfe, ob deine Implementation von Selectionsort stabil ist.
 +
 +(b) Ändere in der Klasse "Sorting" die Methode ''less'' so, dass diese auch dann 0 zurückgibt, wenn die zu vergleichenden Elemente gleich sind:
 +
 +<code java>
 +protected boolean less(String v, String w) {
 +    return v.compareTo(w) <= 0; // Kleiner gleich, nicht nur echt kleiner!
 +}
 +</code>
 +
 +Überprüfe erneut, ob sein Selectionsort Algorithmus jetzt stabil ist.
  • faecher/informatik/oberstufe/algorithmen/sorting/insertionsort/start.1675887036.txt.gz
  • Zuletzt geändert: 08.02.2023 20:10
  • von Frank Schiebel