InsertionSort.md
... ...
@@ -0,0 +1,52 @@
1
+# Insertion Sort
2
+
3
+## Einführung
4
+Insertion Sort (Einfügesortierung) ist ein einfacher Sortieralgorithmus, der ähnlich wie das Sortieren von Spielkarten funktioniert. Er baut das sortierte Array schrittweise auf, indem er jedes neue Element an die richtige Position in der bereits sortierten Teilsequenz einfügt.
5
+
6
+## Funktionsweise
7
+1. **Initialisierung**: Das erste Element wird als sortiert betrachtet.
8
+2. **Iteration**: Das nächste Element wird mit den bereits sortierten Elementen verglichen.
9
+3. **Vergleich und Verschiebung**: Größere Elemente werden nach rechts verschoben, um Platz für das aktuelle Element zu schaffen.
10
+4. **Einfügen**: Das aktuelle Element wird an der gefundenen Position eingefügt.
11
+5. **Wiederholung**: Dieser Prozess wird für alle Elemente wiederholt, bis das gesamte Array sortiert ist.
12
+
13
+![einfügen](insert.png)
14
+
15
+Hinweis: Bei jedem Durchgang wird die rote Zahl als gezogene Zahl angesehen und an der richtigen Stelle eingefügt (sic!)
16
+
17
+## Komplexität
18
+- **Zeitkomplexität (Best Case)**: O(n) – wenn das Array bereits sortiert ist.
19
+- **Zeitkomplexität (Average/Worst Case)**: O(n<sup>2</sup>) – bei zufälliger oder umgekehrter Reihenfolge.
20
+- **Speicherkomplexität**: O(1) – es wird kein zusätzlicher Speicher benötigt (in-place).
21
+
22
+## Java-Implementierung
23
+
24
+```java
25
+
26
+public class InsertionSort {
27
+ public static void insertionSort(int[] arr) {
28
+ for (int i = 1; i < arr.length; i++) {
29
+ int key = arr[i];
30
+ int j = i - 1;
31
+
32
+ // Verschiebe Elemente, die größer als key sind, nach rechts
33
+ while (j >= 0 && arr[j] > key) {
34
+ arr[j + 1] = arr[j];
35
+ j--;
36
+ }
37
+
38
+ // Füge key an der richtigen Position ein
39
+ arr[j + 1] = key;
40
+ }
41
+ }
42
+
43
+ // Beispielaufruf
44
+ public static void main(String[] args) {
45
+ int[] data = {12, 11, 13, 5, 6};
46
+ System.out.println("Unsortiert: " + java.util.Arrays.toString(data));
47
+ insertionSort(data);
48
+ System.out.println("Sortiert: " + java.util.Arrays.toString(data));
49
+ }
50
+}
51
+
52
+```
SelectionSort.md
... ...
@@ -0,0 +1,53 @@
1
+# Selection Sort
2
+
3
+## Einführung
4
+Selection Sort (Auswahlsortierung) ist ein einfacher, vergleichsbasierter Sortieralgorithmus, der ein Array in einen sortierten und einen unsortierten Teil unterteilt. In jeder Iteration wird das kleinste Element aus dem unsortierten Teil ausgewählt und mit dem ersten Element dieses Teils getauscht.
5
+
6
+## Funktionsweise
7
+1. **Initialisierung**: Der sortierte Teil ist am Anfang leer.
8
+2. **Suche Minimum**: Finde das kleinste Element im unsortierten Teil.
9
+3. **Tauschen**: Vertausche es mit dem ersten Element des unsortierten Teils.
10
+4. **Verschieben**: Erweitere den sortierten Teil um eine Position.
11
+5. **Wiederholung**: Wiederhole, bis der gesamte Array sortiert ist.
12
+
13
+![auswahl](selection.png)
14
+
15
+Hinweis: Der aktuell minimale Wert (Selection) wird direkt an die richtige Stelle getauscht (swapping), nicht Stück-für-Stück wie beim Nachbarvergleich (bubble).
16
+
17
+## Komplexität
18
+- **Zeitkomplexität**: O(n<sup>2</sup>) im besten, durchschnittlichen und schlechtesten Fall.
19
+- **Speicherkomplexität**: O(1) – arbeitet in-place.
20
+- **Stabilität**: Instabil (kann die relative Reihenfolge gleicher Elemente ändern).
21
+
22
+## Java-Implementierung
23
+
24
+```java
25
+public class SelectionSort {
26
+ public static void selectionSort(int[] arr) {
27
+ int n = arr.length;
28
+
29
+ for (int i = 0; i < n - 1; i++) {
30
+ int minIdx = i;
31
+
32
+ // Finde das kleinste Element im unsortierten Teil
33
+ for (int j = i + 1; j < n; j++) {
34
+ if (arr[j] < arr[minIdx]) {
35
+ minIdx = j;
36
+ }
37
+ }
38
+
39
+ // Tausche das gefundene Minimum mit dem ersten Element
40
+ int temp = arr[minIdx];
41
+ arr[minIdx] = arr[i];
42
+ arr[i] = temp;
43
+ }
44
+ }
45
+
46
+ // Beispielaufruf
47
+ public static void main(String[] args) {
48
+ int[] data = {64, 25, 12, 22, 11};
49
+ System.out.println("Unsortiert: " + java.util.Arrays.toString(data));
50
+ selectionSort(data);
51
+ System.out.println("Sortiert: " + java.util.Arrays.toString(data));
52
+ }
53
+}
... ...
\ No newline at end of file
insert.png
... ...
Binary files /dev/null and b/insert.png differ
selection.png
... ...
Binary files /dev/null and b/selection.png differ