Selection Sort-Algorithmus mit Python Code Beispiel

⚡ Intelligente Zusammenfassung

Selection Sort ist ein In-Place-Vergleichsalgorithmus, der eine zufällige Liste aufsteigend sortiert, indem er wiederholt den kleinsten unsortierten Wert auswählt und in den sortierten Bereich verschiebt. Diese Ressource erklärt … Python Beispiel und seine Zeitkomplexität.

  • 🎯 Kernidee: Beim Selection Sort wird wiederholt der Minimalwert im unsortierten Abschnitt ermittelt und in den sortierten Abschnitt verschoben.
  • 🧠 Vor Ort: Der Sortiervorgang verwendet nur eine zusätzliche temporäre Variable, was zu einer Speicherkomplexität von O(1) führt.
  • Zeitliche Komplexität: Aufgrund verschachtelter Schleifen beträgt die Laufzeit im schlechtesten, besten und durchschnittlichen Fall O(n²).
  • 🐍 Python Ejemplo: Eine kurze Funktion mit zwei Schleifen tauscht das Minimum so lange an die richtige Stelle, bis die Liste sortiert ist.
  • beste Verwendung: Es eignet sich für kleine Listen, bei denen die Tauschkosten niedrig sind und jeder Wert überprüft werden muss.

Auswahlsortierungsalgorithmus

Was ist Auswahlsortierung?

AUSWAHL SORTIEREN ist ein Vergleichssortierungsalgorithmus, der zum Sortieren einer zufälligen Liste von Elementen in aufsteigender Reihenfolge verwendet wird. Der Vergleich erfordert nicht viel zusätzlichen Platz. Es benötigt nur einen zusätzlichen Speicherplatz für die temporäre Variable.

Dies ist bekannt als an Ort und Stelle Sortierung. Die Auswahlsortierung hat eine Zeitkomplexität von O(n2), wobei n die Gesamtzahl der Elemente in der Liste ist. Die Zeitkomplexität misst die Anzahl der Iterationen, die zum Sortieren der Liste erforderlich sind. Die Liste ist in zwei Abschnitte unterteilt: Die erste Liste enthält sortierte Elemente, während die zweite Liste unsortierte Elemente enthält.

Standardmäßig ist die sortierte Liste leer und die unsortierte Liste enthält alle Elemente. Die unsortierte Liste wird dann nach dem Mindestwert durchsucht, der dann in die sortierte Liste eingefügt wird. Dieser Vorgang wird wiederholt, bis alle Werte verglichen und sortiert wurden.

Wie funktioniert die Auswahlsortierung?

Das erste Element in der unsortierten Partition wird mit allen Werten auf der rechten Seite verglichen, um zu prüfen, ob es sich um den Mindestwert handelt. Wenn es nicht der Mindestwert ist, wird seine Position mit dem Mindestwert getauscht.

Beispiel

  • Wenn beispielsweise der Index des Mindestwerts 3 ist, wird der Wert des Elements mit Index 3 auf Index 0 platziert, während der Wert, der sich auf Index 0 befand, auf Index 3 platziert wird. Wenn das erste Element in der unsortierten Partition ist den Mindestwert, dann gibt es seine Positionen zurück.
  • Das als Minimalwert ermittelte Element wird dann in die Partition auf der linken Seite, die sortierte Liste, verschoben.
  • Die partitionierte Seite hat jetzt ein Element, während die unpartitionierte Seite (n – 1) Elemente hat, wobei n die Gesamtzahl der Elemente in der Liste ist. Dieser Vorgang wird immer wieder wiederholt, bis alle Elemente anhand ihrer Werte verglichen und sortiert wurden.

Problem Definition

Eine Liste mit Elementen in zufälliger Reihenfolge muss in aufsteigender Reihenfolge sortiert werden. Betrachten Sie die folgende Liste als Beispiel.

[21,6,9,33,3].

Die obige Liste sollte sortiert werden, um die folgenden Ergebnisse zu erzielen

[3,6,9,21,33].

Lösung (Algorithmus)

Schritt 1) Ermitteln Sie den Wert von n, der der Gesamtgröße des Arrays entspricht

Schritt 2) Teilen Sie die Liste in sortierte und unsortierte Abschnitte auf. Der sortierte Abschnitt ist zunächst leer, während der unsortierte Abschnitt die gesamte Liste enthält

Schritt 3) Wählen Sie den Mindestwert aus dem unpartitionierten Abschnitt aus und platzieren Sie ihn im sortierten Abschnitt.

Schritt 4) Wiederholen Sie den Vorgang (n – 1) Mal, bis alle Elemente in der Liste sortiert sind.

Visuelle Darstellung

Die folgenden Abbildungen zeigen, wie der Auswahlsortieralgorithmus bei der Sortierung einer Liste mit fünf Elementen die Werte durchläuft.

Das folgende Bild zeigt die unsortierte Liste

Visuelle Darstellung

Schritt 1)

Visuelle Darstellung

Der erste Wert 21 wird mit den restlichen Werten verglichen, um zu prüfen, ob es sich um den Minimalwert handelt.

Visuelle Darstellung

3 ist der Mindestwert, daher sind die Positionen von 21 und 3 vertauscht. Die grün hinterlegten Werte stellen den sortierten Teil der Liste dar.

Schritt 2)

Visuelle Darstellung

Der Wert 6, der das erste Element in der unsortierten Partition ist, wird mit den übrigen Werten verglichen, um herauszufinden, ob ein niedrigerer Wert vorhanden ist

Visuelle Darstellung

Der Wert 6 ist der Minimalwert, er behält also seine Position.

Schritt 3)

Visuelle Darstellung

Das erste Element der unsortierten Liste mit dem Wert 9 wird mit den übrigen Werten verglichen, um zu prüfen, ob es sich um den Mindestwert handelt.

Visuelle Darstellung

Der Wert 9 ist der Mindestwert, sodass er seine Position in der sortierten Partition behält.

Schritt 4)

Visuelle Darstellung

Der Wert 33 wird mit den restlichen Werten verglichen.

Visuelle Darstellung

Der Wert 21 ist kleiner als 33, daher werden die Positionen vertauscht, um die obige neue Liste zu erstellen.

Schritt 5)

Visuelle Darstellung

Wir haben nur noch einen Wert in der unpartitionierten Liste. Daher ist es bereits sortiert.

Visuelle Darstellung

Die endgültige Liste ähnelt der im obigen Bild gezeigten.

Auswahl Sortieren Programm mit Python 3

Der folgende Code zeigt die Implementierung der Auswahlsortierung mit Python 3

def selectionSort( itemsList ):
    n = len( itemsList )
    for i in range( n - 1 ):
        minValueIndex = i

        for j in range( i + 1, n ):
            if itemsList[j] < itemsList[minValueIndex] :
                minValueIndex = j

        if minValueIndex != i :
            temp = itemsList[i]
            itemsList[i] = itemsList[minValueIndex]
            itemsList[minValueIndex] = temp

    return itemsList


el = [21,6,9,33,3]

print(selectionSort(el))

Die Ausführung des obigen Codes erzeugt folgende Ergebnisse

[3, 6, 9, 21, 33]

Code Erläuterung

Die Erklärung für den Code lautet wie folgt

Auswahl Sortieren Programm mit Python 3

Hier ist Code Erläuterung:

  1. Definiert eine Funktion namens „selectionSort“.
  2. Ruft die Gesamtzahl der Elemente in der Liste ab. Wir benötigen dies, um die Anzahl der Durchgänge beim Wertevergleich zu bestimmen.
  3. Äußere Schleife. Verwendet die Schleife, um die Werte der Liste zu durchlaufen. Die Anzahl der Iterationen beträgt (n – 1). Der Wert von n ist 5, also ergibt (5 – 1) 4. Das bedeutet, dass die äußeren Iterationen viermal durchgeführt werden. In jeder Iteration wird der Wert der Variablen i der Variablen minValueIndex zugewiesen
  4. Innere Schleife. Verwendet die Schleife, um den Wert ganz links mit den anderen Werten auf der rechten Seite zu vergleichen. Der Wert für j beginnt jedoch nicht beim Index 0. Er beginnt bei (i + 1). Dadurch werden die Werte ausgeschlossen, die bereits sortiert wurden, sodass wir uns auf Elemente konzentrieren, die noch nicht sortiert wurden.
  5. Sucht den Mindestwert in der unsortierten Liste und platziert ihn an der richtigen Position
  6. Aktualisiert den Wert von minValueIndex beim Tausch.ping Bedingung ist wahr
  7. Vergleicht die Werte der Indexnummern minValueIndex und i, um festzustellen, ob sie ungleich sind.
  8. Der Wert ganz links wird in einer zeitlichen Variablen gespeichert
  9. Der niedrigere Wert von der rechten Seite nimmt die erste Position ein
  10. Der im Zeitwert gespeicherte Wert wird an der Position gespeichert, die zuvor der Minimalwert innehatte
  11. Gibt die sortierte Liste als Funktionsergebnis zurück
  12. Erstellt eine Liste el mit Zufallszahlen
  13. Drucken Sie die sortierte Liste nach dem Aufruf der Auswahlsortierfunktion und übergeben Sie dabei el als Parameter.

Zeitliche Komplexität der Auswahlsortierung

Die Sortierkomplexität wird verwendet, um die Anzahl der Ausführungszeiten auszudrücken, die zum Sortieren der Liste erforderlich sind. Die Implementierung besteht aus zwei Schleifen.

Die äußere Schleife, die die Werte einzeln aus der Liste auswählt, wird n-mal ausgeführt, wobei n die Gesamtzahl der Werte in der Liste ist.

Die innere Schleife, die den Wert aus der äußeren Schleife mit den restlichen Werten vergleicht, wird ebenfalls n-mal ausgeführt, wobei n die Gesamtzahl der Elemente in der Liste ist.

Daher beträgt die Anzahl der Ausführungen (n * n), was auch als O(n) ausgedrückt werden kann2).

Die Auswahlsortierung hat drei Komplexitätskategorien, nämlich;

  • Schlimmsten Fall – hier erfolgt die Auflistung in absteigender Reihenfolge. Der Algorithmus führt die maximale Anzahl von Ausführungen durch, die als [Big-O] O(n) ausgedrückt wird2)
  • bester Fall Dies tritt auf, wenn die bereitgestellte Liste bereits sortiert ist. Der Algorithmus führt die minimale Anzahl an Ausführungen durch, die als [Big-Omega] Ω(n) ausgedrückt wird.2)
  • Durchschnittlicher Fall Dies tritt auf, wenn die Liste in zufälliger Reihenfolge vorliegt. Die durchschnittliche Komplexität wird als [Big-theta] Θ(n) ausgedrückt.2)

Der Selection Sort hat eine Speicherkomplexität von O(1), da er nur eine temporäre Variable für den Tausch benötigt.ping Werte.

Wann sollte die Auswahlsortierung verwendet werden?

Die Auswahlsortierung eignet sich am besten, wenn Sie Folgendes tun möchten:

  • Sie müssen eine kleine Liste von Elementen in aufsteigender Reihenfolge sortieren
  • Wenn die Kosten des Tauschsping Die Werte sind unbedeutend.
  • Es wird auch verwendet, wenn Sie sicherstellen müssen, dass alle Werte in der Liste überprüft wurden.

Vorteile der Auswahlsortierung

Die Vorteile der Auswahlsortierung sind folgende

  • Es funktioniert sehr gut bei kleinen Listen
  • Es handelt sich um einen In-Place-Algorithmus. Es benötigt nicht viel Platz zum Sortieren. Für die Speicherung der zeitlichen Variablen ist nur ein zusätzlicher Platz erforderlich.
  • Es funktioniert gut bei Artikeln, die bereits sortiert wurden.

Nachteile der Auswahlsortierung

Im Folgenden sind die Nachteile der Auswahlsortierung aufgeführt.

  • Bei der Arbeit an großen Listen ist die Leistung schlecht.
  • Die Anzahl der während der Sortierung durchgeführten Iterationen ist n-Quadrat, wobei n die Gesamtzahl der Elemente in der Liste ist.
  • Andere Algorithmen, wie beispielsweise Quicksort, weisen im Vergleich zum Selectionsort eine bessere Leistung auf.

Häufig gestellte Fragen

Selection Sort ist in seiner Grundform nicht stabil, weil es zu Vertauschungen kommt.ping Weit voneinander entfernte Elemente können die relative Reihenfolge gleicher Schlüssel verändern. Eine Variante mit verketteter Liste oder sorgfältiges Verschieben kann dies stabilisieren, die Standard-Array-Version ist jedoch instabil.

Selection Sort durchsucht den unsortierten Teil, um das kleinste Element zu finden und es an die richtige Stelle einzufügen. Dadurch sind nur wenige Vertauschungen nötig. Insertion Sort hingegen verschiebt größere sortierte Elemente nach rechts, um sie einzufügen. Insertion Sort ist in der Regel bei nahezu sortierten Daten schneller.

Selection Sort führt bei einer Liste von n Elementen maximal n-1 Vertauschungen durch, eine pro Durchlauf. Diese geringe Anzahl an Vertauschungen macht es nützlich, wenn das Schreiben in den Speicher aufwändig ist, obwohl es immer noch O(n²) Vergleiche durchführt.

KI-Tutoren können tracDer Selection Sort-Algorithmus wird Schritt für Schritt erklärt, jeder Tauschvorgang animiert und Ihr Verständnis der Zeitkomplexität abgefragt. Dieses interaktive Feedback hilft Anfängern zu verstehen, wie das Minimum in jedem Durchlauf ausgewählt und verschoben wird.

Ja. KI-Programmierassistenten können Selection Sort in vielen Sprachen generieren, jede Zeile erklären und bei großen Eingaben effizientere Algorithmen wie Quicksort vorschlagen. Testen Sie den generierten Code immer, bevor Sie ihn verwenden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: