Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:sorting:insertionsort:start [08.02.2023 18:40] – Frank Schiebel | faecher: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 | + | 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. |
< | < | ||
<iframe title=" | <iframe title=" | ||
</ | </ | ||
+ | |||
+ | ===== Beispiel ===== | ||
+ | |||
+ | Für die Zeichenkette „ZEBRASSINDGELB“ sieht das dann folgendermaßen aus: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A1) === | ||
+ | |||
+ | * Implementiere im Bluej-Projekt https:// | ||
+ | * Erzeuge mithilfe der '' | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | |||
+ | Wenn alle Elemente der zu sortierenden Liste denselben Sortier-Schlüssel haben (die zu sortierende Liste also z. B. nur aus " | ||
+ | |||
+ | ++++ Tipp | | ||
+ | Veranschauliche in beiden Verfahren das Sortieren einer Zeichenkette aus gleichen Buchstaben und überlege dir, welches Verfahren effizienter ist. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ++++ | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | |||
+ | < | ||
+ | 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. | ||
+ | </ | ||
+ | |||
+ | (a) Überprüfe, | ||
+ | |||
+ | (b) Ändere in der Klasse " | ||
+ | |||
+ | <code java> | ||
+ | protected boolean less(String v, String w) { | ||
+ | return v.compareTo(w) <= 0; // Kleiner gleich, nicht nur echt kleiner! | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Überprüfe erneut, ob sein Selectionsort Algorithmus jetzt stabil ist. |