Aufgabenstellung
EuraStudy
Algorithmen sind endliche, eindeutige Handlungsvorschriften. Prüfungsrelevant sind Kontrollstrukturen, Rekursion, klassische Sortier- und Suchverfahren sowie die Beschreibung von Laufzeiten mit Big-O.
6 Abschnitte~23 Min Lesezeit4 KompetenzenStand 06/2026
Lesetiefe: Vertiefung
Schriftgröße: Standard · Zeilenabstand: Kompakt
Medien immer laden: aus
6 Abschnitte30 Merksätze7 Formeln30 Fehlerwarnungen
Modularisierung - Aufrufgraph
Vokabeln
→ KarteiÜbersetze den Pseudocode in Python: "Solange n > 1 wiederhole: wenn n gerade, n := n/2; sonst n := 3n+1. Zähle Schritte."
`def collatz_schritte(n: int) -> int:`
```python schritte = 0 while n > 1: n = n // 2 if n % 2 == 0 else 3 * n + 1 schritte += 1 return schritte ```
`collatz_schritte(6)` ergibt 8 (6,3,10,5,16,8,4,2,1).
Ergebnis: Die Funktion liefert die Länge der Collatz-Folge ab Startwert . Sie terminiert empirisch für alle bisher getesteten Werte - mathematisch unbewiesen!
Jedes Programm lässt sich aus Sequenz, Selektion und Iteration aufbauen - das ist das Theorem von Böhm/Jacopini.
Funktionen sind die wichtigste Abstraktionsstufe: gleiche Eingabe ergibt gleiche Ausgabe, ohne Seiteneffekte ist Testen einfach.
Modularisiere frühzeitig, damit jede Funktion einen einzigen klaren Zweck erfüllt.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Schreibe eine Python-Funktion `vokale_zählen(text)`, die die Anzahl der Vokale (a, e, i, o, u; groß/klein) zurückliefert. Demonstriere den Aufruf mit "Informatik".
Passende Aufgaben üben50 Fragen zum Thema
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Böhm/Jacopini: Flow diagrams, Turing machines and languages with only two formation rules (CACM) · Python Software Foundation - Tutorial (PSF)
Rekursionsbaum von fib(4)
Vokabeln
→ KarteiRekursive Definition der Fakultät
Die obere Zeile ist der Basisfall, die untere der Rekursionsfall. Ohne den Basisfall terminiert die Rekursion nicht; die Festlegung hält die Formeln in den Randfällen gültig.
Fibonacci-Rekurrenz
Die naive Umsetzung dieser Rekurrenz berechnet dieselben Teilwerte immer wieder und läuft exponentiell. Mit Zwischenspeicherung oder iterativ sinkt der Aufwand auf - das ist das Standardbeispiel für den Nutzen der Memoization.
Implementiere `fib(n)` rekursiv und mit Memoization in Python.
```python def fib(n): if n < 2: return n return fib(n-1) + fib(n-2) ``` Laufzeit mit .
```python from functools import lru_cache @lru_cache def fib(n): return n if n < 2 else fib(n-1)+fib(n-2) ``` Laufzeit , Speicher .
```python def fib(n): a, b = 0, 1 for _ in range(n): a, b = b, a+b return a ``` Laufzeit , Speicher .
Ergebnis: Rekursion ist elegant, aber ohne Caching zu langsam; Memoization oder Iteration sind die richtigen Lösungen für große .
Rekursion zerlegt ein Problem in eine kleinere Version desselben Problems plus einen Basisfall.
Der Call-Stack ist die Daten-struktur, die Rekursion überhaupt erst möglich macht.
Memoization speichert berechnete Werte und verwandelt exponentielle Rekursion in lineare Laufzeit.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Schreibe eine rekursive Python-Funktion `fakultät(n)`. Erläutere, warum sie bei in Python einen `RecursionError` auslösen kann.
Passende Aufgaben üben50 Fragen zum Thema
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms (CLRS) Kap. 2-4 (MIT Press)
Logarithmisches Wachstum O(log n) bei wachsendem n
Mergesort - Divide-and-Conquer Baum
Quicksort - Partition mit Pivot
Vokabeln
→ KarteiMergesort-Rekurrenz und Lösung
Der Faktor 2 steht für die beiden Hälften, für das Verschmelzen. Die Lösung folgt aus dem Master-Theorem (zweiter Fall) und gilt für Best, Average und Worst Case gleichermaßen - das unterscheidet Mergesort von Quicksort.
Sortiere [38, 27, 43, 3, 9, 82, 10] mit Mergesort und protokolliere die Merge-Schritte.
Links [38,27,43,3] | Rechts [9,82,10].
[38,27] und [43,3] werden zu je [27,38] und [3,43] gemergt.
merge([27,38],[3,43]) = [3,27,38,43].
[9,82] und [10]; merge ergibt [9,10,82].
merge([3,27,38,43],[9,10,82]) = [3,9,10,27,38,43,82].
Ergebnis: Sortiertes Array [3, 9, 10, 27, 38, 43, 82]. Laufzeit .
Sortieren ist das Standardbeispiel, an dem alle Konzepte zusammenkommen: Verfahren, Komplexität, Speicher und Stabilität.
Mergesort - Divide-and-Conquer Baum
Mergesort teilt das Array bis auf Einzelelemente und fädelt sie sortiert zusammen - daher die garantiert logarithmische Tiefe.
Quicksort ist schnell, weil die Partition in-place arbeitet, aber er kann bei schlechter Pivotwahl quadratisch werden.
Quicksort - Partition mit Pivot
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Sortiere [5, 2, 9, 1, 5, 6] mit Insertion Sort und protokolliere die ersten drei Iterationen. Wie oft wird vergleichen und wie oft getauscht?
Passende Aufgaben üben50 Fragen zum Thema
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Knuth: The Art of Computer Programming, Vol. 3 - Sorting and Searching (Addison-Wesley) · OpenDSA - Sorting Algorithms (Virginia Tech)
Lineare vs. binäre Suche - Vergleichsschritte
Vokabeln
→ KarteiRekurrenz der binären Suche
Jeder Schritt halbiert den Suchraum und kostet einen Vergleich. Daraus folgt die logarithmische Laufzeit: In einer Million Elementen genügen rund 20 Schritte.
Finde mit binärer Suche den Wert 23 im Array [3, 7, 12, 18, 23, 31, 47, 55].
low = 0, high = 7. Pivot mid = (0+7)/2 = 3 -> a[3] = 18 < 23 -> rechts weitersuchen.
low = 4, high = 7. mid = 5 -> a[5] = 31 > 23 -> links weitersuchen.
low = 4, high = 4. mid = 4 -> a[4] = 23 == Suchwert. Index 4 zurückgeben.
Ergebnis: Index 4 nach 3 Vergleichen; allgemein Schritte für Elemente.
Die binaere Suche ist das Schulbuchbeispiel für logarithmische Laufzeit.
Bei jeder Halbierung sinkt das Restproblem auf , , ... bis .
Auf unsortierten Daten musst du linear suchen oder zuerst sortieren - das kostet .
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Schreibe eine iterative binaere Suche in JavaScript. Wie viele Iterationen sind im Worst Case bei einer Million Elementen nötig?
Passende Aufgaben üben50 Fragen zum Thema
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Sedgewick & Wayne: Algorithms, 4. Auflage (Addison-Wesley)
Mergesort - Divide-and-Conquer Baum
Wachstum der Komplexitätsklassen
Vokabeln
→ KarteiBig-O Notation - obere asymptotische Schranke
ist eine positive Konstante, die Stelle, ab der die Abschätzung gilt. Die Definition macht deutlich, warum konstante Faktoren wegfallen und die Aussage erst für große gilt.
Master-Theorem - Rekurrenzform für Divide-and-Conquer
ist die Zahl der Teilprobleme, der Verkleinerungsfaktor und der Aufwand für Zerlegen und Zusammenfügen. Verglichen wird mit ; welcher der beiden dominiert, entscheidet den Fall.
Logarithmisches Wachstum O(log n) bei wachsendem n
Bestimme die Lösung der Rekurrenz mit dem Master-Theorem.
, , .
; also .
-> Fall 2 des Master-Theorems.
.
Ergebnis: Mergesort hat asymptotische Laufzeit im Worst, Average und Best Case.
Big-O sagt dir, wie sich eine Laufzeit verhält, wenn du die Eingabegröße verdoppelst.
Logarithmisches Wachstum O(log n) bei wachsendem n
Das Master-Theorem ist die schnellste Methode, Divide-and-Conquer-Rekurrenzen zu lösen.
Achte darauf, dass Big-O nur asymptotisch gilt - für kleine Eingaben kann ein quadratischer Algorithmus schneller sein als ein log-linearer.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Bestimme mit dem Master-Theorem die Lösung der Rekurrenzen und . Wie lautet die Komplexität jeweils?
Passende Aufgaben üben50 Fragen zum Thema
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: CLRS: Introduction to Algorithms, Kapitel 3 und 4 (MIT Press)
Knapsack-DP-Tabelle (W=50)
Vokabeln
→ KarteiDP-Rekurrenz für 0/1-Knapsack
ist der beste Wert mit den ersten Gegenständen bei Restkapazität ; und sind Gewicht und Wert des -ten. Die beiden Argumente des Maximums sind die Entscheidungen weglassen und einpacken - der zweite Fall ist nur zulässig, wenn gilt.
Werte , Gewichte , Kapazität .
Tabelle der Größe ; erste Zeile/Spalte = 0.
Für jedes Item und jede Kapazität : , falls .
(Items 2 und 3).
Ergebnis: Maximaler Wert 220 EUR. Mit Backtracking auf der Tabelle lässt sich die optimale Auswahl rekonstruieren. Laufzeit - pseudo-polynomiell.
Greedy ist verführerisch einfach - aber nur bei matroidischen Problemen garantiert optimal.
DP ist die Klassiker-Antwort, wenn ein Problem optimale Teilstruktur und Überlappung hat.
Memoization spart Zeit, DP-Tabelle spart Stack - wähle nach Problem.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Löse das 0/1-Knapsack-Problem mit Werten , Gewichten und Kapazität mittels DP-Tabelle.
Passende Aufgaben üben50 Fragen zum Thema
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: CLRS Kapitel 15 (DP) und 16 (Greedy) (MIT Press)
Stand 06/2026Vollständige Fassung über den Tiefenregler — gleiche Stelle, gleiche Anker
Belege & Quellen
Addison-Wesley
Virginia Tech
Siehe auch