Programmierung · Konzepte · Grundlagen
Was ist ein Algorithmus?
Es ist eines der meistgebrauchten Wörter der Tech-Welt — „der Algorithmus entscheidet“, „ein schnellerer Algorithmus“, „der algorithmische Feed“ — und eines der am wenigsten präzise erklärten. Ein Algorithmus ist eine einfache, grundlegende Idee, die der gesamten Informatik zugrunde liegt. Dieser Leitfaden erklärt, was ein Algorithmus ist, seine Kerneigenschaften, Beispiele aus dem Alltag und aus dem Code, warum Effizienz zählt und worin er sich von einem Programm unterscheidet.
Die kurze Definition
Ein Algorithmus ist eine endliche, schrittweise Prozedur, um ein Problem zu lösen oder aus einer Eingabe eine Ausgabe zu erzeugen. Geben Sie ihm dieselbe Eingabe und befolgen Sie die Schritte genau, und er liefert jedes Mal dasselbe Ergebnis. Es ist ein präzises Rezept — unabhängig von einer bestimmten Programmiersprache.
Eine Analogie aus dem Alltag
Ein Kochrezept ist ein Algorithmus: eine festgelegte Liste von Schritten („Zwiebeln hacken, Öl erhitzen, hinzufügen und 5 Minuten rühren“), die Eingaben (die Zutaten) in eine Ausgabe (ein Gericht) verwandelt. Genau wie die in der Schule gelernte schriftliche Division oder die Schritte zum Aufbau eines Möbelstücks aus dem Bausatz. Die Idee gibt es lange vor den Computern — das Wort stammt vom Mathematiker al-Chwarizmi aus dem 9. Jahrhundert.
Die Kerneigenschaften
- Wohldefinierte Schritte — jede Anweisung ist klar und eindeutig.
- Endlich — er muss nach einer begrenzten Anzahl von Schritten enden und darf nicht endlos laufen.
- Definierte Ein- und Ausgabe — er nimmt null oder mehr Eingaben entgegen und erzeugt ein Ergebnis.
- Effektiv — jeder Schritt ist elementar genug, um tatsächlich ausgeführt zu werden.
Ein Algorithmus ist zudem sprachunabhängig: Derselbe Sortieralgorithmus kann in Python, Haskell, Rust oder von Hand auf Papier geschrieben werden. Der Algorithmus ist die Idee; der Code ist ein Ausdruck davon.
Ein konkretes Beispiel
Um die größte Zahl in einer Liste zu finden, lautet der Algorithmus:
1. Assume the first number is the largest so far.
2. Look at each remaining number in turn.
3. If it is bigger than the largest so far, make it the new largest.
4. After the last number, the largest so far is the answer. Das ist ein vollständiger Algorithmus — in Klartext geschrieben, ohne dass Code nötig ist. Ihn in eine Sprache zu übersetzen, ist ein separater, mechanischer Schritt.
Warum Effizienz zählt: Big-O
Verschiedene Algorithmen können dasselbe Problem mit sehr unterschiedlichem Arbeitsaufwand lösen. Die Big-O-Notation beschreibt, wie die Kosten eines Algorithmus wachsen, wenn die Eingabe größer wird. Eine Liste einmal zu durchlaufen, um den größten Wert zu finden, ist O(n) — die Arbeit wächst proportional zur Anzahl der Elemente. Ein naiver Ansatz, der jedes Paar vergleicht, wäre O(n²) — bei großen Eingaben weitaus langsamer. Einen besseren Algorithmus zu wählen, zählt oft mehr als ein schnellerer Computer: Eine Sortierung in O(n log n) schlägt eine Sortierung in O(n²) bei einer großen Liste jedes Mal.
Algorithmus vs. Programm
Sie sind verwandt, aber nicht dasselbe. Ein Algorithmus ist die abstrakte Methode — die Schritte. Ein Programm ist eine konkrete Umsetzung eines oder mehrerer Algorithmen in einer bestimmten Sprache, mit allen Details der realen Welt (Eingabeverarbeitung, Fehler, Speicher) ausgefüllt. Man entwirft zuerst den Algorithmus und implementiert ihn dann. Derselbe Algorithmus kann viele Programme antreiben.
FAQ
Ist ein Algorithmus dasselbe wie Code? Nein. Der Algorithmus ist die sprachunabhängige Menge von Schritten; der Code ist eine Umsetzung davon. Derselbe Algorithmus kann in vielen Sprachen geschrieben werden.
Was macht einen Algorithmus „gut“? Zuerst Korrektheit (er liefert für jede gültige Eingabe die richtige Ausgabe), dann Effizienz (er verbraucht eine vertretbare Menge an Zeit und Speicher, beschrieben durch Big-O), dann Klarheit.
Was ist die Big-O-Notation? Eine Art zu beschreiben, wie Laufzeit oder Speicher eines Algorithmus mit der Eingabegröße wachsen — z. B. O(n) linear, O(n log n), O(n²) quadratisch. Sie vergleicht Algorithmen unabhängig von der genauen Maschine.
Braucht man Mathe, um Algorithmen zu verstehen? Grundlegende Logik reicht für den Anfang. Die alltäglichen — Suchen, Sortieren, Zählen — sind intuitiv; Mathe wird nützlich, wenn man ihre Effizienz analysiert und vergleicht.
Algorithmen sind das „Was tun“; eine Sprache wie Haskell oder die Daten, die eine API transportiert, sind das „Wie“ und das „Womit“. Durchstöbern Sie weitere klare Erklärungen in unserem Guide-Index.