Selection Sort (Auswahl-Sortierung)

Der Selection Sort Algorithmus gehört zu den intuitivsten Sortierverfahren. Er findet wiederholt das kleinste Element im Array und bewegt es an den Anfang. Anschließend sucht er das kleinste Element im verbliebenen Teil des Arrays und wiederholt diesen Vorgang, bis das Ende des Arrays erreicht ist.
a = [...]
for i in range(len(a)):                  # Hier platzieren wir das Minimum von a[i:] an Position a[i]
    min_idx = i                          # Index des kleinsten Elements
    for j in range(i + 1, len(a)):       # Finde den Index des kleinsten Elements
        if a[j] < a[min_idx]:            # Falls wir ein kleineres Element finden
            min_idx = j                  # Aktualisiere den Index des kleinsten Elements
    a[i], a[min_idx] = a[min_idx], a[i]  # Vertausche a[i] und a[min_idx]
print(a)
Bei jeder Iteration nehmen wir das kleinste Element aus dem verbleibenden Array und vertauschen es mit dem aktuellen Element anhand ihrer Indizes. Falls das aktuelle Element bereits das kleinste ist, bleibt das Array unverändert, da das Element sich dann mit sich selbst vertauscht.
 
Der Selection Sort Algorithmus findet also stets das kleinste Element im Array und vertauscht den aktuellen Index mit diesem Minimum. Das bedeutet, dass in jeder Iteration das gesamte verbleibende Array durchsucht wird, um das Minimum zu finden (die min-Funktion läuft Element für Element durch, um den kleinsten Wert zu ermitteln). Aus diesem Grund hat der Algorithmus insgesamt n Iterationen, die jeweils etwa n Durchläufe beinhalten ⇒ Operationen.
Lassen Sie uns den Algorithmus an einigen Arrays durchspielen:
[4, 1, -1, 0, 2, 8]
  1. i = 0val = -1idx = 2 ⇒ swap ⇒ [-1, 1, 4, 0, 2, 8]
  1. i = 1val = 0idx = 3 ⇒ swap ⇒ [-1, 0, 4, 1, 2, 8]
  1. i = 2val = 1idx = 3 ⇒ swap ⇒ [-1, 0, 1, 4, 2, 8]
  1. i = 3val = 2idx = 4 ⇒ swap ⇒ [-1, 0, 1, 2, 4, 8]
  1. i = 4val = 4idx = 4 ⇒ swap ⇒ [-1, 0, 1, 2, 4, 8]
  1. i = 5val = 8idx = 5 ⇒ swap ⇒ [-1, 0, 1, 2, 4, 8]
[10, 5, 1, -1, -2, -7]
  1. i = 0val = -7idx = 5 ⇒ swap ⇒ [-7, 5, 1, -1, -2, 10]
  1. i = 1val = -2idx = 4 ⇒ swap ⇒ [-7, -2, 1, -1, 5, 10]
  1. i = 2val = -1idx = 3 ⇒ swap ⇒ [-7, -2, -1, 1, 5, 10]
  1. i = 3val = 1idx = 3 ⇒ swap ⇒ [-7, -2, -1, 1, 5, 10]
  1. i = 4val = 5idx = 4 ⇒ swap ⇒ [-7, -2, -1, 1, 5, 10]
  1. i = 5val = 10idx = 5 ⇒ swap ⇒ [-7, -2, -1, 1, 5, 10]
[1, 2, 3, 4, 5]
  1. i = 0val = 1idx = 0 ⇒ swap ⇒ [1, 2, 3, 4, 5]
  1. i = 1val = 2idx = 1 ⇒ swap ⇒ [1, 2, 3, 4, 5]
  1. i = 2val = 3idx = 2 ⇒ swap ⇒ [1, 2, 3, 4, 5]
  1. i = 3val = 4idx = 3 ⇒ swap ⇒ [1, 2, 3, 4, 5]
  1. i = 4val = 5idx = 4 ⇒ swap ⇒ [1, 2, 3, 4, 5]

Aufgabe

Gegeben n ganze Zahlen, sortieren Sie sie in aufsteigender Reihenfolge mit Hilfe von Selection Sort.

Eingabe

Die erste Zeile der Eingabe enthält eine einzelne ganze Zahl n (1 ≤ n ≤ 1000), die die Anzahl der Elemente im Array angibt.
Die nächste Zeile enthält n ganzzahlige Werte (mit ), getrennt durch Leerzeichen.

Ausgabe

Das Programm soll das eingegebene Array in aufsteigender Reihenfolge ausgeben.

Examples

Eingabe
Ausgabe
5 5 5 3 2 3
2 3 3 5 5

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue