Zum Inhalt springen
Algorithmen Anfänger 20 min

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.

Aktualisiert:
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:

  1. Nimm das erste Element und speichere es als “Maximum”.
  2. Vergleiche jedes weitere Element mit dem Maximum.
  3. Wenn ein Element groesser ist, ueberschreibe das Maximum.
  4. 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

  1. Big-O verstehen - Kapitel 2
  2. Datenstrukturen - Arrays, Linked Lists, Hash-Tables, Trees
  3. Klassische Algorithmen - Sortieren, Suchen
  4. Graphen - BFS, DFS
  5. Dynamic Programming - Muster erkennen
  6. 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.

Zurück zum Algorithmen Kurs