Insertion Sort

Stelle Dir vor, Du erhältst bei einem Kartenspiel 10 Karten auf die Hand. Wie würdest Du sie sortieren?

Los geht’s

Lerne mit Millionen geteilten Karteikarten

Leg kostenfrei los

Brauchst du Hilfe?
Lerne unseren AI-Assistenten kennen!

Upload Icon

Erstelle automatisch Karteikarten aus deinen Dokumenten.

   Dokument hochladen
Upload Dots

FC Phone Screen

Brauchst du Hilfe mit
Insertion Sort?
Frage unseren AI-Assistenten

Review generated flashcards

Leg kostenfrei los
Du hast dein AI Limit auf der Website erreicht

Erstelle unlimitiert Karteikarten auf StudySmarter

StudySmarter Redaktionsteam

Team Insertion Sort Lehrer

  • 7 Minuten Lesezeit
  • Geprüft vom StudySmarter Redaktionsteam
Erklärung speichern Erklärung speichern
Inhaltsverzeichnis
Inhaltsverzeichnis

Springe zu einem wichtigen Kapitel

    Die meisten Menschen würden einfach links beginnen, Karte für Karte durchgehen und diese weiter vorn einsortieren, wenn nötig. Und damit bist Du schon mittendrin im Thema, denn Insertion Sort macht im Grunde nichts anderes.

    Insertion Sort Erklärung

    Was genau bedeutet denn nun Insertion Sort? Insertion Sort ist ein Algorithmus, der eine Datenmenge sortiert, indem er sie von vorn bis hinten durchgeht, die Elemente vergleicht und bei Bedarf ein Element entnimmt und weiter vorn wieder einsetzt.

    Insertion Sort besteht aus den zwei englischen Begriffen insertion ("Einfügung") und sort ("sortieren") und wird deshalb auf Deutsch manchmal auch als "Sortieren durch Einfügen" bezeichnet.

    Insertion Sort Funktionsweise

    Wie funktioniert Insertion Sort? Grundsätzlich geht der Algorithmus die gesamte Menge an Elementen durch. Dabei gilt die Menge vor dem aktuellen Laufindex als sortiert, und die Menge nach dem Index als unsortiert.

    Das aktuelle Element wird dabei mit den vorhergehenden Elementen verglichen, bis die passende Stelle gefunden ist. An dieser Stelle wird das Element dann eingefügt. Es kann aber auch sein, dass das Element bereits an seiner richtigen Position war.

    In beiden Fällen geht es mit dem nächsten Element weiter, solange noch als unsortiert geltende Elemente vorhanden sind.

    Insertion Sort Beispiel

    Am besten lässt sich die Funktionsweise von Insertion Sort an einem Beispiel demonstrieren. Gegeben sei eine Menge von Zahlen [7, 3, 9, 2, 1, 4], die aufsteigend sortiert werden soll.

    Das erste Element in der Menge kann grundsätzlich übersprungen werden, da es kein vorheriges Element gibt, mit dem es verglichen werden könnte.

    IterationErklärungErgebnis
    1Das zweite Element ist kleiner als das erste und wird davor eingefügt.[3, 7, 9, 2, 1, 4]
    2Die 9 ist größer als 7 und muss daher nicht bewegt werden.[3, 7, 9, 2, 1, 4]
    3Die 2 ist kleiner als die 9 vor ihr. Sie wird aber so lange mit den vorherigen Elementen verglichen, bis die passende Stelle gefunden ist. In diesem Fall ist die 2 kleiner als alle Elemente vor ihr, und kommt daher an den Anfang der Zahlenreihe. [2, 3, 7, 9, 1, 4]
    4Als Nächstes wird die 1 untersucht. Sie ist ebenfalls kleiner als alle Elemente vor ihr und kommt an den Anfang der Menge.[1, 2, 3, 7, 9, 4]
    5Das letzte Element im unsortierten Bereich ist die 4. Sie ist kleiner als 7, aber größer als die 3, und wird daher gleich nach der 3 eingefügt. Somit ist die Menge nun aufsteigend sortiert![1, 2, 3, 4, 7, 9]

    Wie Du siehst, durchläuft der Algorithmus also die Menge von vorn bis hinten und schaut in diesem Fall, ob das aktuelle Element kleiner ist als die vorherigen Elemente. Dann schiebt er dieses Element weiter nach vorne, wenn nötig.

    Insertion Sort Struktogramm

    Durch das folgende Struktogramm wird die Funktionsweise und der Ablauf von Insertion Sort noch einmal besser verdeutlicht. Es liefert außerdem die Grundlage für eine mögliche Implementierung.

    Insertion Sort Struktogramm StudySmarterAbb. 1 - Insertion Sort Struktogramm

    Insertion Sort Komplexität

    Was den zusätzlich benötigten Speicherplatz angeht, ist der Algorithmus sehr effizient.

    Das Sortieren der Elemente geschieht in-place. Außer den benötigten Hilfsvariablen wird nichts zwischengespeichert, sodass der benötigte Platz unabhängig von der zu sortierenden Mengengröße ist. Die Platzkomplexität ist also konstant und beträgt hier O(1).

    Doch wie sieht es mit der Zeitkomplexität aus?

    Insertion Sort Laufzeit

    Du siehst bereits an dem oberen Beispiel, dass der Algorithmus mit zwei ineinander verschachtelten Schleifen arbeitet. Die erste Schleife durchläuft die Menge von vorn bis hinten. Die zweite Schleife vergleicht das aktuelle Element mit allen vorherigen Elementen, bis der passende Platz dafür gefunden ist.

    Du siehst an dem Beispiel auch, dass die zweite Schleife bis ganz an den Anfang der Menge zurücklaufen muss, wenn das zu sortierende Element das bisher kleinste ist. Das kann bei großen und unsortierten Mengen schnell ineffizient werden.

    Die beiden Schleifen haben jeweils eine Zeitkomplexität von O(n), weshalb sich für den Algorithmus eine Gesamtkomplexität von O(n²) ergibt.

    Falls Du Nachholbedarf zum Thema Zeitkomplexität hast, findest Du mehr dazu in der Erklärung zur O-Notation.

    Insertion Sort – Weitere Begrifflichkeiten

    Zum Verständnis von Insertion Sort und dem Vergleich mit anderen Sortieralgorithmen werden im Folgenden noch weitere Begrifflichkeiten erklärt.

    Insertion Sort stabil – instabil

    Insertion Sort verändert die Anordnung der Elemente nur, wenn sich das zu sortierende Element tatsächlich unterscheidet. Wenn es gleich groß ist wie ein vorstehendes Element, wird es nicht verschoben.

    Damit bleibt die Anordnung gleich großer Elemente immer erhalten. Insertion Sort ist also ein stabiler Sortieralgorithmus.

    Insertion Sort vergleichsbasiert

    Insertion Sort gehört zu den vergleichsbasierten Sortieralgorithmen. Der Algorithmus vergleicht also immer zwei Elemente miteinander, um über die Anordnung in der Datenmenge zu entscheiden.

    Insertion Sort iterativ – rekursiv

    Normalerweise implementiert man Insertion Sort iterativ, aber auch eine rekursive Implementierung ist möglich. Diese eignet sich jedoch mehr für Übungszwecke, denn es ist zu bedenken, dass bei der rekursiven Variante die Platzkomplexität des Algorithmus O(n) beträgt statt O(1).

    O(1) beschreibt einen konstanten Aufwand eines Algorithmus. Der Aufwand ist dabei also unabhängig von der Eingabegröße. O(n) ist hingegen ein linearer Aufwand, also wächst der Aufwand dabei linear mit der Eingabegröße an.

    Insertion Sort Parallelisierbarkeit

    Der Insertion Sort Algorithmus ist nicht vollständig parallelisierbar.

    Es gibt allerdings den Sortieralgorithmus Shellsort, der eine Erweiterung von Insertion Sort darstellt. Dieser ist zwar parallelisierbar, allerdings hat er nicht mehr die stabile Eigenschaft von Insertion Sort.

    Mehr zum Shell Sort Algorithmus findest Du in der entsprechenden Erklärung dazu.

    Insertion Sort Zusammenfassung

    In der folgenden Tabelle findest Du die wichtigsten Eigenschaften von Insertion Sort übersichtlich zusammengefasst.

    Best CaseAverage CaseWorst CasePlatzkomplexitätStabiles VerfahrenvergleichsbasiertIn-placeParallelisierbarkeititerativ/rekursiv
    O(n)O(n²)O(n²)O(1)JaJaJaNicht parallelisierbarBeides möglich

    Insertion Sort Vorteile – Nachteile

    Wie jedes andere Sortierverfahren hat auch Insertion Sort seine Vor- und Nachteile.

    VorteileNachteile
    Einfache ImplementierungIneffizient bei großen Datenmengen
    VerständlichkeitNicht parallelisierbar

    Das Problem des Insertion Sort Sortieralgorithmus zeigt sich schnell, wenn man mit großen und nicht vorsortierten Datenmengen arbeitet. Der Algorithmus arbeitet ineffizient, weil er eine große Anzahl an Vergleichen benötigt und weit über die Datenmenge iterieren muss. Das zeigt sich an der kostenintensiven, quadratischen Laufzeit im Worst-Case-Szenario.

    Insertion Sort Pseudocode

    Zum Abschluss findest Du hier noch eine Implementierung von Insertion Sort in Pseudocode.

    function InsertionSort (List items)
        // Iteriere von vorn bis hinten durch die Liste.
        for i = 0 to items.length - 2 do:
            nextIndex = i + 1
            // Dieses Element wird mit den vorigen in der Liste verglichen.
            nextElem = items[nextIndex]
            
            // Schiebe alle vorigen Elemente so lange nach vorne, bis der richtige Platz für nextElem gefunden ist.
            while nextIndex > 0 AND nextElem < items[nextIndex - 1] do:
                items[nextIndex] = items[nextIndex - 1]
                nextIndex -= 1
    
            // Füge nextElem an der passenden Stelle ein.
            items[nextIndex] = nextElem

    Wie Du siehst, ist die Implementierung von Insertion Sort nicht besonders aufwendig und relativ leicht verständlich.

    Insertion Sort - Das Wichtigste

    • Insertion Sort Funktionsweise: Der Algorithmus iteriert von vorn bis hinten über die Datenmenge, vergleicht das aktuelle Element mit vorherigen Elementen und setzt es an der passenden Stelle ein.
    • Insertion Sort Komplexität: Die Platzkomplexität ist bei iterativer Implementierung O(1) und damit konstant, weil der Algorithmus in-place arbeitet. Die Insertion Sort Laufzeit ist schlimmstenfalls O(n²) und im besten Fall O(n).
    • Zur Insertion Sort Erklärung ist auch wichtig, dass der Algorithmus stabil und vergleichsbasiert arbeitet.
    • Insertion Sort Vorteile & Nachteile
      • + Leicht verständlich und einfach zu implementieren
      • - Ineffizient bei großen Datenmengen
      • - Nicht parallelisierbar

    Nachweise

    1. D.E. Knuth (1973). The Art of Computer Programming, Vol. 3 - Sorting and Searching. Addison-Wesley
    Häufig gestellte Fragen zum Thema Insertion Sort

    Wie funktioniert ein Insertion Sort?

    Der Insertion Sort Algorithmus iteriert von vorn bis hinten über die Datenmenge, vergleicht das aktuelle Element mit vorherigen Elementen und setzt es an der passenden Stelle ein. 

    Wann benutzt man Insertion Sort?

    Man benutzt Insertion Sort vor allem bei kleineren oder vorsortierten Datenmengen, da der Algorithmus bei großen Datenmengen schnell ineffizient wird.

    Warum ist Insertion Sort stabil?

    Insertion Sort ist stabil, weil nur Elemente umsortiert werden, die nicht dem vorherigen Element in der Folge gleichen. Die Reihenfolge gleicher Elemente bleibt somit immer erhalten. 

    Was ist der erste Schritt bei Insertion Sort?

    Im ersten Schritt wird das nächste unsortierte Element in der Datenfolge gesucht. Im zweiten Schritt wird die richtige Position für dieses Element ermittelt und es wird dort eingefügt.

    Erklärung speichern

    Teste dein Wissen mit Multiple-Choice-Karteikarten

    Wie wird Insertion Sort auch noch genannt?  

    Wahr oder falschInsertion Sort arbeitet nicht vergleichsbasiert.

    Wahr oder falschSolange noch Elemente im unsortierten Bereich vorhanden sind, läuft Insertion Sort weiter. 

    Weiter

    Entdecke Lernmaterialien mit der kostenlosen StudySmarter App

    Kostenlos anmelden
    1
    Über StudySmarter

    StudySmarter ist ein weltweit anerkanntes Bildungstechnologie-Unternehmen, das eine ganzheitliche Lernplattform für Schüler und Studenten aller Altersstufen und Bildungsniveaus bietet. Unsere Plattform unterstützt das Lernen in einer breiten Palette von Fächern, einschließlich MINT, Sozialwissenschaften und Sprachen, und hilft den Schülern auch, weltweit verschiedene Tests und Prüfungen wie GCSE, A Level, SAT, ACT, Abitur und mehr erfolgreich zu meistern. Wir bieten eine umfangreiche Bibliothek von Lernmaterialien, einschließlich interaktiver Karteikarten, umfassender Lehrbuchlösungen und detaillierter Erklärungen. Die fortschrittliche Technologie und Werkzeuge, die wir zur Verfügung stellen, helfen Schülern, ihre eigenen Lernmaterialien zu erstellen. Die Inhalte von StudySmarter sind nicht nur von Experten geprüft, sondern werden auch regelmäßig aktualisiert, um Genauigkeit und Relevanz zu gewährleisten.

    Erfahre mehr
    StudySmarter Redaktionsteam

    Team Informatik Lehrer

    • 7 Minuten Lesezeit
    • Geprüft vom StudySmarter Redaktionsteam
    Erklärung speichern Erklärung speichern

    Lerne jederzeit. Lerne überall. Auf allen Geräten.

    Kostenfrei loslegen

    Melde dich an für Notizen & Bearbeitung. 100% for free.

    Schließ dich über 22 Millionen Schülern und Studierenden an und lerne mit unserer StudySmarter App!

    Die erste Lern-App, die wirklich alles bietet, was du brauchst, um deine Prüfungen an einem Ort zu meistern.

    • Karteikarten & Quizze
    • KI-Lernassistent
    • Lernplaner
    • Probeklausuren
    • Intelligente Notizen
    Schließ dich über 22 Millionen Schülern und Studierenden an und lerne mit unserer StudySmarter App!
    Mit E-Mail registrieren