Loading
Vom Algorithmusbegriff über Kontrollstrukturen bis hin zur Implementation in Java und Python. Schwerpunkte sind Spezifikation, Korrektheit, Iteration, Rekursion sowie modulare Zerlegung — die KMK EPA verortet diesen Kompetenzbereich an der Schnittstelle von „Modellieren/Implementieren" und „Strukturieren/Darstellen".
7Abschnitteca. 28Min Lesezeit3KompetenzenNiveauBasis 3 · Standard 3 · Vertiefung 1Stand 06/2026
grundlegendes Niveau
gA: Algorithmus als endliche Folge wohldefinierter Schritte erklären, Sequenz/Selektion/Iteration in Java oder Python implementieren, einfache Schleifeninvarianten benennen.
erhöhtes Niveau
eA: Rekursion vs. Iteration vergleichen, Schleifeninvarianten formal nachweisen, Komplexität in O-Notation angeben und nicht-triviale Algorithmen (Euklid, Ackermann qualitativ) analysieren.
Lesetiefe: Vertiefung
Schriftgröße: Standard
Hoare-Tripel
Wenn die Vorbedingung P vor Ausführung von S gilt und S terminiert, dann gilt nach S die Nachbedingung Q.
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Formulieren Sie ein Hoare-Tripel für eine while-Schleife, die das Maximum eines Arrays bestimmt, geben Sie die Schleifeninvariante an und beweisen Sie deren Erhalt (Induktion über die Durchläufe) sowie die Terminierung über eine geeignete Terminierungsfunktion.
Aktive Wiederholung
Erläutern Sie die vier konstituierenden Eigenschaften eines Algorithmus (Endlichkeit, Eindeutigkeit, Ausführbarkeit, Allgemeinheit) an einem Beispiel Ihrer Wahl und beurteilen Sie, ob das Verfahren der schriftlichen Division alle Eigenschaften erfüllt.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Begründen Sie mit dem Satz von Böhm-Jacopini, dass die `goto`-Anweisung theoretisch entbehrlich ist, und wandeln Sie eine mit Sprüngen formulierte Schleife in eine äquivalente strukturierte `while`-Form um.
Aktive Wiederholung
Implementieren Sie in Java eine Methode `int maximum(int[] a)`, die das Maximum eines Integer-Arrays liefert, und erläutern Sie die Schleifeninvariante.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Rekursionsgleichung (Master-Theorem)
Für Divide-and-Conquer-Verfahren; Lösung hängt vom Verhältnis zwischen f(n) und n^(log_b a) ab.
Stellen Sie für Mergesort die Rekursionsgleichung auf und bestimmen Sie die Laufzeit mit dem Master-Theorem sowie über den Rekursionsbaum.
Mergesort teilt ein Array der Länge n in zwei Hälften der Länge n/2, sortiert beide rekursiv und mischt sie (merge) in linearer Zeit Θ(n) wieder zusammen.
Daraus folgt T(n) = 2·T(n/2) + c·n mit Basisfall T(1) = Θ(1). Der Term 2·T(n/2) erfasst die beiden rekursiven Aufrufe, c·n den linearen Mischaufwand.
Rekursionsgleichung (Master-Theorem)
Für Divide-and-Conquer-Verfahren; Lösung hängt vom Verhältnis zwischen f(n) und n^(log_b a) ab.
Mit a = 2 und b = 2 ist n^(log_b a) = n^(log_2 2) = n^1 = n. Da f(n) = Θ(n) genau der Vergleichsgröße n^(log_b a) entspricht, greift Fall 2: T(n) = Θ(n^(log_b a) · log n) = Θ(n log n).
Der Rekursionsbaum hat log_2 n Ebenen; auf jeder Ebene summiert sich die Mischarbeit aller Teilprobleme zu c·n. Gesamtaufwand: c·n · log_2 n = Θ(n log n). Beide Wege liefern dasselbe Ergebnis.
Ergebnis: T(n) = 2·T(n/2) + Θ(n) ∈ Θ(n log n) — garantiert, unabhängig von der Eingabe (Best, Average und Worst Case).
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Zeigen Sie, dass Mergesort mit T(n) = 2T(n/2) + O(n) die Komplexität T(n) ∈ O(n log n) hat (Master-Theorem, Fall 2).
Aktive Wiederholung
Implementieren Sie die Türme-von-Hanoi-Lösung rekursiv und beurteilen Sie, warum eine iterative Variante deutlich komplexer wäre.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Insertion Sort — Trace über [5, 2, 4, 6, 1, 3]
Vergleichszahl: n²/2 gegen n·log₂n
Bestimmen Sie die Zeitkomplexität in O-Notation für folgenden Java-Code: zwei verschachtelte Schleifen über n Elemente mit einer inneren O(log n)-Operation.
```java for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { binarySearch(arr, key); // O(log n) } } ```
Äußere Schleife n Iterationen, innere im Mittel n/2; insgesamt T(n) = n·(n+1)/2 ≈ n²/2 innere Aufrufe.
Jeder innere Schritt kostet O(log n). Gesamtkosten: O(n²/2 · log n).
Konstanter Faktor 1/2 entfällt; Ergebnis ist O(n² log n).
Ergebnis: Zeitkomplexität: O(n² log n); dominanter Term ist die quadratische äußere Verschachtelung.
Führen Sie auf dem Array [3, 7, 8, 5, 2, 1, 9, 5, 4] eine Lomuto-Partition mit dem Pivot a[hi] = 4 (letztes Element) durch und geben Sie die Endposition des Pivots an.
Pivot p = a[hi] = 4. Der Index i (Grenze des „≤-Bereichs") startet auf i = lo − 1 = −1; j durchläuft die Positionen lo … hi−1, also 0 … 7.
j=0: 3 ≤ 4 → i=0, Tausch a[0]↔a[0] → [3,7,8,5,2,1,9,5,4]. j=1,2,3: 7,8,5 > 4 → kein Tausch. j=4: 2 ≤ 4 → i=1, Tausch a[1]↔a[4] → [3,2,8,5,7,1,9,5,4]. j=5: 1 ≤ 4 → i=2, Tausch a[2]↔a[5] → [3,2,1,5,7,8,9,5,4]. j=6,7: 9,5 > 4 → kein Tausch.
Nach der Schleife ist i = 2. Pivot kommt auf i+1 = 3: Tausch a[3]↔a[hi]=a[8] → [3,2,1,4,7,8,9,5,5]. Der Pivot 4 steht jetzt am Index 3.
Linker Teil [3,2,1] enthält nur Werte ≤ 4, rechter Teil [7,8,9,5,5] nur Werte ≥ 4. Der Pivot ist an seiner endgültigen Sortierposition; Quicksort sortiert beide Teile rekursiv weiter.
Ergebnis: Nach der Partition: [3,2,1,4,7,8,9,5,5]; der Pivot 4 liegt endgültig auf Index 3 (3 Elemente links, 5 rechts).
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Übersicht der Vergleichszahlen (worst/average/best) — Bubble Sort O(n²)/O(n²)/O(n) (mit Abbruch-Flag), Insertion Sort O(n²)/O(n²)/O(n), Selection Sort O(n²) in allen Fällen (~n²/2 Vergleiche, aber nur O(n) Tausche), Merge Sort O(n log n) garantiert (stabil, O(n) Zusatzspeicher), Quick Sort O(n²)/O(n log n)/O(n log n) (in-place, nicht stabil). Begründen Sie, warum nur die vergleichsbasierten Verfahren der unteren Schranke Ω(n log n) unterliegen, Zählsortierung dagegen nicht.
Aktive Wiederholung
Vergleichen Sie Insertion Sort, Merge Sort und Quick Sort hinsichtlich Zeit-/Speicherkomplexität, Stabilität und Eignung für eingebettete Systeme.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Beweisen Sie die Schleifeninvariante der iterativen binären Suche per Induktion über die Durchläufe (Erhalt der Invariante und Terminierung über die echt fallende Intervalllänge hi − lo + 1) und leiten Sie die obere Schranke ⌈log₂(n+1)⌉ für die Vergleichsanzahl her.
Aktive Wiederholung
Implementieren Sie die binäre Suche iterativ und beweisen Sie, dass die Schleifeninvariante „falls key in a vorkommt, dann im Intervall [lo, hi]" gilt.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Big-O-Wachstumsklassen im Vergleich
Definition der O-Notation
Asymptotische obere Schranke; konstante Faktoren und niedrigere Terme werden ignoriert.
Rekursionsgleichung (Master-Theorem)
Für Divide-and-Conquer-Verfahren; Lösung hängt vom Verhältnis zwischen f(n) und n^(log_b a) ab.
Bestimmen Sie die Zeitkomplexität in O-Notation für folgenden Java-Code: zwei verschachtelte Schleifen über n Elemente mit einer inneren O(log n)-Operation.
```java for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { binarySearch(arr, key); // O(log n) } } ```
Äußere Schleife n Iterationen, innere im Mittel n/2; insgesamt T(n) = n·(n+1)/2 ≈ n²/2 innere Aufrufe.
Jeder innere Schritt kostet O(log n). Gesamtkosten: O(n²/2 · log n).
Konstanter Faktor 1/2 entfällt; Ergebnis ist O(n² log n).
Ergebnis: Zeitkomplexität: O(n² log n); dominanter Term ist die quadratische äußere Verschachtelung.
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Beweisen Sie mit dem Vergleichsmodell die untere Schranke Ω(n log n) für vergleichsbasierte Sortieralgorithmen über die Entscheidungsbaumtiefe.
Aktive Wiederholung
Analysieren Sie die Komplexität des Algorithmus „für jedes Element eines Arrays der Länge n eine binäre Suche im selben Array" und begründen Sie das Ergebnis.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Rekursionsgleichung (Master-Theorem)
Für Divide-and-Conquer-Verfahren; Lösung hängt vom Verhältnis zwischen f(n) und n^(log_b a) ab.
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Skizzieren Sie eine DP-Tabelle für das 0/1-Rucksackproblem mit n Gegenständen und Kapazität W; Laufzeit O(nW), pseudopolynomial.
Aktive Wiederholung
Analysieren Sie das Rucksackproblem (0/1-Variante) hinsichtlich Greedy- und DP-Lösbarkeit und beurteilen Sie, warum Greedy hier nicht zum Optimum führt.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.