Inhaltsverzeichnis[Ausblenden][Zeigen]
In der Informatik geht es darum, die Komplexität von Algorithmen und Datenstrukturen zu verstehen.
Sie haben eine Liste mit Elementen, die sortiert werden müssen, aber Sie haben nicht die Zeit oder die Ressourcen, um einen komplexeren Sortieralgorithmus zu verwenden.
Insertion Sorting ist einer der einfachsten Sortieralgorithmen, kann aber bei großen Listen langsam sein.
Einfache Implementierung und Verständlichkeit haben diese Methode zu einem Favoriten unter Programmierern gemacht. Es ist perfekt für kleine Listen oder wenn Sie eine schnelle Lösung benötigen.
In diesem Blogbeitrag werden wir uns mit der zeitlichen Komplexität des Insertion Sorting befassen. Dieser Algorithmus dient zum Sortieren von Arrays und hat eine Laufzeit von O(n2). Das bedeutet, dass die zeitliche Komplexität mit der Größe des Arrays zunimmt.
Dieser Algorithmus kann jedoch oft schneller sein als andere Sortieralgorithmen, wie z. B. Quicksort.
Schauen wir uns genauer an, wie Insertion Sorting funktioniert!
Was ist der Insertion Sort Algorithmus?
Element für Element generiert Insertion Sort ein sortierbares Array, das häufig als Liste bezeichnet wird.
Das Sortieren wird beispielsweise in komplizierten Computerprogrammen wie Compilern angewendet, wo die Reihenfolge der Token für die Interpretation des Programms wichtig ist.
Wie funktioniert Insertion Sort?
Wenn wir Insertion Sort verwenden, um ein Array zu sortieren, beginnt der Algorithmus damit, das kleinste Element in der Liste zu finden und es an der richtigen Position einzufügen.
Dann findet es den nächstkleineren Artikel und fügt ihn an der richtigen Position ein, und so weiter.
Der Algorithmus arbeitet, indem er die Liste durchläuft und jedes Element mit dem davor vergleicht.
Wenn die Elemente in der falschen Reihenfolge sind, tauscht der Algorithmus sie aus. Dann prüft es, ob die Liste sortiert ist, und wenn ja, endet der Algorithmus.
In der Praxis wird Insertion Sort oft mit wenigen Codezeilen implementiert, was es zu einer beliebten Wahl zum Sortieren kleiner Arrays macht. Bei der Verwendung dieses Algorithmus sollte jedoch die zeitliche Komplexität berücksichtigt werden.
Beispiel:
Hier ist ein Beispiel dafür, wie Insertion Sorting funktioniert. Wir werden das folgende Array verwenden:
1, 2, 3, 4, 5, 6
Der Algorithmus beginnt damit, das kleinste Element in der Liste zu finden, das 1 ist. Dann fügt er es an der richtigen Position ein, der ersten Position. Dann findet es das nächstkleinere Element, nämlich 2. Es fügt es an der richtigen Position ein, nämlich der zweiten Position.
Dann findet es das nächstkleinere Element, nämlich 3. Es fügt es an der richtigen Position ein, nämlich der dritten Position.
Dann findet es das nächstkleinere Element, das 4 ist. Es fügt es an der richtigen Position ein, das ist die vierte Position, und so weiter. Die Liste ist jetzt sortiert!
Wir können aus dem Beispiel ersehen, dass der Algorithmus sechs Vergleiche und Vertauschungen benötigt, um die Liste zu sortieren. Das liegt daran, dass es n braucht2 Vergleiche und Swaps, um eine Liste mit n Elementen zu sortieren. In diesem Fall ist n = 6.
Wie kann die Komplexität der Sortierzeit beim Einfügen verbessert werden?
Während Insertion Sort eine Laufzeit von O(n2), kann es durch die Verwendung eines besseren Sortieralgorithmus wie Quicksort verbessert werden.
Quicksort hat eine O(n log n)-Laufzeit, die viel schneller ist als O(n2).
In manchen Fällen kann Insertion Sorting jedoch schneller sein als Quicksort.
Wenn die Liste beispielsweise bereits sortiert ist, dauert das Sortieren beim Einfügen weniger Zeit als Quicksort.
In der Praxis wird Insertion Sort oft mit wenigen Codezeilen implementiert, was es zu einer beliebten Wahl zum Sortieren kleiner Arrays macht.
Bei der Verwendung dieses Algorithmus sollte jedoch die zeitliche Komplexität berücksichtigt werden.
Zeitliche Komplexität
Worst-Case-Komplexität O(n2):
Die zeitliche Komplexität steigt mit der Größe des Arrays. Es dauert n2 Vergleiche und Swaps, um eine Liste mit n Elementen zu sortieren.
Wenn wir beispielsweise ein Array der Größe 1000 haben, benötigt der Algorithmus 1,000,000 Vergleiche und Swaps, um das Array zu sortieren.
Best-Case-Komplexität O(n):
Die Zeitkomplexität ist die gleiche wie die Größe des Eingabearrays. ich
t benötigt n Vergleiche und Vertauschungen, um eine Liste mit n Elementen zu sortieren. Stellen Sie sich beispielsweise ein Array der Größe 5 vor. Der Algorithmus benötigt fünf Vergleiche und Austauschvorgänge, um das Array zu sortieren.
Durchschnittliche Fallkomplexität O(n2):
Die Zeitkomplexität liegt in diesem Fall zwischen der Worst-Case- und der Best-Case-Komplexität.
Es dauert n2 Vergleiche und Swaps, um eine Liste mit n Elementen zu sortieren.
Somit ist Insertion Sorting ein stabiler Sortieralgorithmus.
Warum ist Insertion Sort stabil?
Die Einfügesortierung ist stabil, da sie die Reihenfolge gleicher Elemente im Eingabearray beibehält.
Dies ist für viele Anwendungen wichtig, beispielsweise für den Datenabruf oder die Finanzanalyse. Wenn wir beispielsweise zwei Zahlenlisten haben und diese vergleichen möchten, müssen wir sicherstellen, dass die Reihenfolge der Elemente erhalten bleibt.
Wenn die Listen nicht sortiert sind, werden wir sie nicht genau vergleichen.
Hinterlassen Sie uns einen Kommentar