Was sind Algorithmen? Sortierverfahren erklärt

Algorithmen sind das Herz der Programmierung. In diesem Beitrag lernst du, was ein Algorithmus ist, und verstehst klassische Sortierverfahren anhand von Beispielen.

Teilen
Was sind Algorithmen? Sortierverfahren erklärt

Hinter jedem Programm stecken Algorithmen. Sie sind das Rezept, nach dem der Computer ein Problem löst. Ein besonders anschauliches Beispiel sind Sortierverfahren: Sie bringen eine Liste von Zahlen oder Wörtern in eine bestimmte Reihenfolge. In diesem Beitrag klären wir zuerst, was ein Algorithmus überhaupt ist, und schauen uns dann drei klassische Sortierverfahren an. Keine Sorge, alles bleibt anschaulich und nachvollziehbar.

Was ist ein Algorithmus?

Ein Algorithmus ist eine eindeutige, schrittweise Anleitung zur Lösung eines Problems. Du kennst Algorithmen aus dem Alltag, auch ohne Computer: Ein Kochrezept oder eine Bauanleitung ist im Grunde ein Algorithmus. Wichtige Eigenschaften sind:

  • Jeder Schritt ist eindeutig beschrieben.
  • Der Ablauf ist endlich, er kommt also zu einem Ende.
  • Für die gleiche Eingabe kommt immer das gleiche Ergebnis heraus.

Beim Programmieren gießt du solche Anleitungen in Code. Sortieren ist dafür ein perfektes Übungsbeispiel.

Bubble Sort: einfach, aber langsam

Der Bubble Sort ist der einfachste Sortieralgorithmus. Er vergleicht immer zwei benachbarte Elemente und tauscht sie, wenn sie in der falschen Reihenfolge stehen. Das wiederholt er, bis nichts mehr zu tauschen ist. Große Werte steigen dabei nach oben wie Blasen, daher der Name.

def bubble_sort(liste):
    n = len(liste)
    for i in range(n):
        for j in range(n - i - 1):
            if liste[j] > liste[j + 1]:
                liste[j], liste[j + 1] = liste[j + 1], liste[j]
    return liste

print(bubble_sort([5, 2, 9, 1, 3]))  # [1, 2, 3, 5, 9]

Bubble Sort ist leicht zu verstehen, aber langsam. Bei einer Liste mit vielen Elementen braucht er sehr viele Vergleiche.

Selection Sort: das Minimum suchen

Der Selection Sort geht anders vor. Er sucht in jedem Durchlauf das kleinste verbleibende Element und stellt es an die nächste Position. So baut er die sortierte Liste Stück für Stück von vorne auf.

def selection_sort(liste):
    n = len(liste)
    for i in range(n):
        kleinster = i
        for j in range(i + 1, n):
            if liste[j] < liste[kleinster]:
                kleinster = j
        liste[i], liste[kleinster] = liste[kleinster], liste[i]
    return liste

print(selection_sort([5, 2, 9, 1, 3]))  # [1, 2, 3, 5, 9]

Selection Sort tauscht weniger oft als Bubble Sort, muss aber trotzdem die gesamte Liste mehrfach durchsuchen. In der Geschwindigkeit liegt er auf einem ähnlichen Niveau.

Laufzeit: warum O-Notation wichtig ist

Wie schnell ein Algorithmus ist, beschreibt man mit der sogenannten O-Notation. Sie sagt, wie stark der Aufwand mit der Größe der Eingabe wächst. Bubble Sort und Selection Sort liegen beide bei O(n²): Verdoppelst du die Listenlänge, vervierfacht sich der Aufwand ungefähr.

  • O(n²) bedeutet quadratisches Wachstum, das wird bei großen Listen schnell teuer.
  • O(n log n) ist deutlich besser, hier liegen die schnellen Verfahren wie Merge Sort.

Genau deshalb lohnt es sich, bessere Algorithmen zu kennen, sobald die Datenmengen wachsen.

In der Praxis: sorted() nutzen

Die gute Nachricht: In echten Projekten musst du Sortieralgorithmen selten selbst schreiben. Python bringt mit sorted() und der Methode list.sort() eine hochoptimierte Sortierung mit, die intern ein cleveres Verfahren namens Timsort nutzt.

zahlen = [5, 2, 9, 1, 3]

# Neue sortierte Liste, Original bleibt unverändert
print(sorted(zahlen))             # [1, 2, 3, 5, 9]

# Absteigend sortieren
print(sorted(zahlen, reverse=True))  # [9, 5, 3, 2, 1]

# Nach einem Kriterium sortieren, z.B. Wortlänge
woerter = ["Banane", "Apfel", "Kiwi"]
print(sorted(woerter, key=len))   # ['Kiwi', 'Apfel', 'Banane']

Die eingebaute Sortierung ist schnell und gut getestet. Eigene Sortieralgorithmen schreibst du vor allem, um zu verstehen, wie sie funktionieren.

Fazit

Ein Algorithmus ist nichts anderes als eine klare, schrittweise Anleitung zur Lösung eines Problems. An Sortierverfahren wie Bubble Sort und Selection Sort lässt sich das wunderbar nachvollziehen, und ganz nebenbei lernst du mit der O-Notation, warum manche Verfahren besser skalieren als andere. In der Praxis verlässt du dich auf das eingebaute sorted(), doch das Verständnis der Grundlagen macht dich zu einem besseren Programmierer. Mein Tipp: Nimm dir eine kleine Liste und spiele die Schritte der Algorithmen mit Stift und Papier durch. So bleibt das Prinzip wirklich hängen.