Stewdent.eu
▾

Einfügesortierung

Einfügesortierung (Insertion Sort) baut eine sortierte Liste auf, indem jedes neue Element an der richtigen Stelle eingefügt wird. Sie ist besonders effizient bei fast sortierten Listen.

Zuletzt aktualisiert: 20. Februar 2026

★★★☆☆ Stufe 3computingalgorithmensortiereninsertion-sorteinfügesortierung4 Min Lesezeit

Fehler melden

Einfügesortierung (englisch: Insertion Sort) funktioniert ähnlich wie viele Menschen instinktiv Spielkarten auf der Hand sortieren: Du nimmst eine Karte und schiebst sie an die richtige Position zwischen die bereits sortierten Karten. So entsteht nach und nach eine vollständig sortierte Reihe.

So funktioniert Einfügesortierung

Stell dir die Liste [5, 2, 8, 3, 9] vor:

  • Beginne mit dem zweiten Element. Das erste gilt als "bereits sortiert".
  • Nimm 2: Ist es kleiner als 5? Ja → verschiebe 5 nach rechts, füge 2 ein → [2, 5, 8, 3, 9]
  • Nimm 8: Ist es kleiner als 5? Nein → bleibt → [2, 5, 8, 3, 9]
  • Nimm 3: Vergleiche rückwärts: kleiner als 8? Ja → verschiebe. Kleiner als 5? Ja → verschiebe. Kleiner als 2? Nein → füge ein → [2, 3, 5, 8, 9]
  • Nimm 9: Größer als alle → bleibt → [2, 3, 5, 8, 9]

Python-Implementierung

def einfuege_sortierung(elemente):
    for i in range(1, len(elemente)):
        schluessel = elemente[i]    # aktuelles Element zum Einsetzen
        j = i - 1
        
        # Verschiebe größere Elemente nach rechts
        while j >= 0 and elemente[j] > schluessel:
            elemente[j + 1] = elemente[j]
            j -= 1
        
        # Schlüssel an der richtigen Stelle einfügen
        elemente[j + 1] = schluessel
    
    return elemente

zahlen = [5, 2, 8, 3, 9]
print(einfuege_sortierung(zahlen))   # [2, 3, 5, 8, 9]
Hinweis

Der Schlüsselschritt ist elemente[j + 1] = elemente[j]: Elemente werden nach rechts "verschoben", um Platz für das einzufügende Element zu schaffen. Am Ende wird das Element in die freigemachte Lücke gesetzt.

Schritt-für-Schritt-Visualisierung

Für [5, 2, 8, 3, 9]:

SchrittSchlüsselListe
Start—[5, 2, 8, 3, 9]
i=12[2, 5, 8, 3, 9]
i=28[2, 5, 8, 3, 9]
i=33[2, 3, 5, 8, 9]
i=49[2, 3, 5, 8, 9]

Stärken von Einfügesortierung

Einfügesortierung hat gegenüber Bubble-Sort und Auswahlsortierung einen wichtigen Vorteil: Bei fast sortierten Listen ist sie sehr schnell:

# Fast sortierte Liste — Einfügesortierung ist hier sehr effizient
fast_sortiert = [1, 2, 4, 3, 5]   # nur ein Tausch nötig

Im besten Fall (bereits sortierte Liste) macht Einfügesortierung nur n - 1 Vergleiche — das ist O(n), viel besser als O(n²)!

Tipp

Einfügesortierung ist der bevorzugte Algorithmus für kleine Listen und für fast sortierte Daten. Viele professionelle Sortierimplementierungen, wie Pythons sorted(), wechseln intern zu Einfügesortierung, wenn die zu sortierende Teilmenge klein genug ist.

Vergleich der drei einfachen Algorithmen

AlgorithmusBester FallSchlechtester FallStabil
Bubble-SortO(n) optimiertO(n²)Ja
AuswahlsortierungO(n²)O(n²)Nein
EinfügesortierungO(n)O(n²)Ja
Warnung

Alle drei Algorithmen sind für sehr große Listen (tausende Elemente) zu langsam. Für große Datenmengen verwendet man schnellere Verfahren wie Mergesort (O(n log n)). Dennoch sind diese einfachen Algorithmen wichtig, um grundlegende Konzepte zu verstehen.

Übungsaufgaben

Was passiert in Einfügesortierung mit dem Element an Position i=2, wenn die Liste [1, 3, 2, 5, 4] ist?

Antwort anzeigen
Der Schlüssel ist 2. Python vergleicht rückwärts: 2 < 3? Ja → verschiebe 3 nach rechts → [1, 3, 3, 5, 4]. 2 < 1? Nein → füge 2 an Position 1 ein → [1, 2, 3, 5, 4]. Das Element 2 wird korrekt zwischen 1 und 3 einsortiert.

Warum ist Einfügesortierung besonders gut für fast sortierte Listen geeignet?

Antwort anzeigen
Bei fast sortierten Listen muss jedes neu betrachtete Element kaum nach links verschoben werden — oft ist es schon an der richtigen Stelle oder muss nur eine Position nach links. Das bedeutet sehr wenige Verschiebungen. Im besten Fall (komplett sortierte Liste) macht der Algorithmus nur n-1 Vergleiche ohne eine einzige Verschiebung: O(n).