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: