Was sind Algorithmen?
Algorithmen sind die DNA der Software. Lerne, was sie sind, wie man sie beurteilt und warum algorithmisches Denken deine Programmierkunst auf ein neues Level hebt.
Inhaltsverzeichnis
Was sind Algorithmen?
Ein Algorithmus ist eine Schritt-fuer-Schritt-Anleitung, ein Problem zu loesen. Das klingt simpel - ist aber das Fundament der gesamten Informatik. Hinter jedem Such-Ergebnis, jeder Empfehlung, jeder Navigation stecken Algorithmen.
Eine einfache Definition
Ein Algorithmus ist eine eindeutig definierte, endliche Folge von Anweisungen, die ein Problem loest. Kernkriterien:
- Eindeutig - jeder Schritt ist klar definiert
- Endlich - er terminiert irgendwann
- Allgemein - funktioniert fuer beliebige Eingaben
- Deterministisch (meistens) - gleiche Eingabe = gleiches Ergebnis
Ein Rezept ist ein Algorithmus. Eine Bedienungsanleitung ist ein Algorithmus. Deine Navigations-App nutzt Algorithmen. Dein Code ist ein Algorithmus.
Beispiel: Maximum finden
Problem: Finde die groesste Zahl in einer Liste.
Algorithmus:
- Nimm das erste Element und speichere es als “Maximum”.
- Vergleiche jedes weitere Element mit dem Maximum.
- Wenn ein Element groesser ist, ueberschreibe das Maximum.
- Am Ende hast du die groesste Zahl.
In Python:
def maximum(zahlen):
max_wert = zahlen[0]
for z in zahlen:
if z > max_wert:
max_wert = z
return max_wert
print(maximum([3, 7, 2, 9, 4])) # 9
Das ist ein Algorithmus. Einfach - aber vollstaendig.
Warum Algorithmen lernen?
1. Du schreibst besseren Code
Ein Anfaenger schreibt den ersten Algorithmus, der einfaellt. Ein Profi kennt mehrere Loesungen und waehlt die beste.
Beispiel: Duplikate aus einer Liste entfernen.
Anfaenger-Ansatz (O(n²) - quadratisch, langsam):
def duplikate_entfernen(liste):
ergebnis = []
for x in liste:
if x not in ergebnis:
ergebnis.append(x)
return ergebnis
Profi-Ansatz (O(n) - linear, schnell):
def duplikate_entfernen(liste):
return list(set(liste))
Bei 1.000.000 Elementen: Ansatz 1 braucht Stunden, Ansatz 2 Millisekunden.
2. Coding Interviews
Google, Meta, Microsoft, Amazon - alle stellen in Interviews Algorithmen-Fragen:
- “Finde das zweitgroesste Element in einem Array”
- “Kehr einen verschachtelten String um”
- “Implementiere eine LRU-Cache”
Wer diese Muster kennt, besteht.
3. Du verstehst Frameworks besser
React nutzt Reconciliation-Algorithmen. PostgreSQL nutzt B-Tree-Indexes. Git nutzt Graphen-Algorithmen.
Wer die Grundlagen kennt, versteht die Tools tiefer.
4. Du wirst ein besserer Problemloeser
Algorithmisches Denken ist uebertragbar - auch ausserhalb der Programmierung. Wie zerlege ich ein grosses Problem in kleinere?
Algorithmus vs. Datenstruktur
Oft zusammen genannt. Unterschied:
- Algorithmus = Vorgehen, Schritte
- Datenstruktur = Organisation der Daten
Beide arbeiten zusammen:
- Array + Sort-Algorithmus → sortierte Liste
- Hash-Table + Lookup-Algorithmus → schneller Zugriff
- Graph + BFS/DFS → Pfadfindung
Wichtige Fragen zu jedem Algorithmus
1. Ist er korrekt?
Loest er das Problem immer richtig - fuer alle moeglichen Eingaben? Auch fuer Edge Cases wie leere Listen, negative Zahlen, Duplikate?
2. Wie schnell ist er?
Zeitkomplexitaet - wie skaliert die Laufzeit bei mehr Daten?
3. Wie viel Speicher braucht er?
Platzkomplexitaet - wie viel Zusatz-RAM?
4. Ist er stabil (bei Sortieren)?
Bleiben Elemente mit gleichem Wert in der urspruenglichen Reihenfolge?
Big-O - das Mass
Wir brauchen eine Sprache, um Algorithmen zu vergleichen. Big-O-Notation ist das Standard-Werkzeug:
- O(1) - konstant (z.B. Array-Zugriff
arr[i]) - O(log n) - logarithmisch (binaere Suche)
- O(n) - linear (jedes Element einmal)
- O(n log n) - “loglinear” (gute Sortier-Algorithmen)
- O(n²) - quadratisch (geschachtelte Schleifen)
- O(2ⁿ) - exponentiell (brute-force)
Detail folgt im naechsten Kapitel.
Algorithmus-Kategorien
Sortieren
- Bubble Sort, Selection Sort - einfach, aber langsam
- Merge Sort, Quicksort, Heap Sort - produktiv
- Python’s
sorted()nutzt Timsort (ein Merge-Sort-Quicksort-Hybrid)
Suchen
- Linear Search - jeden Eintrag durchgehen
- Binary Search - sortierte Listen, halbieren
- Hash-Table-Lookup - O(1) im Durchschnitt
Graphen
- BFS (Breadth-First Search) - level-by-level
- DFS (Depth-First Search) - tief rein
- Dijkstra - kuerzester Pfad
- A* - kuerzester Pfad mit Heuristik (GPS!)
Dynamic Programming
Probleme in kleinere Teile zerlegen und Ergebnisse cachen:
- Fibonacci
- Longest Common Subsequence
- Knapsack-Problem
Greedy-Algorithmen
Immer die “lokal beste” Entscheidung treffen:
- Huffman-Codierung (Kompression)
- Kuerzester Baum (MST)
- Scheduling
Ein einfaches Beispiel fuer Denken
Problem: Ist diese Zahl eine Primzahl?
Naiv:
def ist_prim(n):
if n < 2: return False
for i in range(2, n):
if n % i == 0:
return False
return True
Das funktioniert. Aber bei grossen Zahlen langsam.
Besser: Nur bis zur Wurzel pruefen:
def ist_prim(n):
if n < 2: return False
if n == 2: return True
if n % 2 == 0: return False
for i in range(3, int(n**0.5) + 1, 2):
if n % i == 0:
return False
return True
Bei n = 1_000_003:
- Naiv: ~500.000 Pruefungen
- Besser: ~500 Pruefungen
Das ist der Unterschied, den algorithmisches Denken macht.
Wie lerne ich Algorithmen?
Praxis-Route
- Big-O verstehen - Kapitel 2
- Datenstrukturen - Arrays, Linked Lists, Hash-Tables, Trees
- Klassische Algorithmen - Sortieren, Suchen
- Graphen - BFS, DFS
- Dynamic Programming - Muster erkennen
- Uebung - LeetCode, HackerRank, Codewars
Empfehlungen
- LeetCode - die Interview-Plattform
- “Cracking the Coding Interview” - Buch-Klassiker
- “Grokking Algorithms” - super visuell, fuer Einsteiger
- Die Videos von “back to back SWE” auf YouTube
Was du nicht brauchst
Einige Bereiche der Algorithmik sind spezialisiert - du brauchst sie selten im Alltag:
- Hoehere Graphen-Theorie
- Lineare Programmierung
- Komplexitaetstheorie im akademischen Sinn
Fuer die normale Programmierung reichen die Basics - wir lernen sie hier.
Lohnt sich Algorithmen 2026?
Auf jeden Fall:
- Bessere Code-Qualitaet in jedem Projekt
- Interview-Vorbereitung fuer jede Firma
- Tiefe Verstaendnis von Datenbanken, Compilern, ML
- Mental Toolkit fuer Problemloesung
Algorithmen sind zeitlos - waehrend Frameworks kommen und gehen, gilt ein O(n log n)-Sort seit 60 Jahren und wird auch in 60 Jahren gelten.
Als Naechstes: Big-O Notation im Detail - das Werkzeug, um Algorithmen zu vergleichen.