Direkt zum Inhalt

BPE 7 · J2

Selectionsort: das nächste Minimum wählen

Du suchst im unsortierten Rest das kleinste Element und setzt es an die nächste endgültige Position.

Bildungsplanbezug: BPE 7.2 · interne Lerneinheit 7.2.1

Geschätzte Lernzeit: 60 Minuten

Noch nicht begonnen

Das kannst du danach

  • Einen Selectionsort-Durchlauf nachvollziehen
  • Minimumposition und Minimumwert unterscheiden
  • Ein sortiertes Präfix begründen
  • Die festgelegte Variante implementieren und Vergleiche zählen

Verständlich erklärt

Unsere aufsteigende Variante beginnt mit i = 0. Setze minimum = i und durchsuche j = i+1 bis n−1. Nur wenn a[j] < a[minimum] gilt, wird minimum auf j gesetzt; bei gleichen Werten bleibt deshalb der frühere Index erhalten. Erst nach dieser gesamten Suche werden a[i] und a[minimum] getauscht. Danach geht es mit i+1 weiter, bis i = n−2 erledigt ist.

Vor Durchlauf i enthält das Präfix a[0:i] bereits die i kleinsten Werte in aufsteigender Reihenfolge; kein Restwert ist kleiner als ein Präfixwert. Ein Durchlauf muss die Folge nicht verändern, wenn das Minimum schon richtig steht. In der festgelegten Variante werden unabhängig von der Eingabereihenfolge (n−1)+(n−2)+…+1 Wertepaare verglichen; Selbsttausche zählen wir nicht als notwendige Positionsänderung.

Gleiche Zahlen führen zu einem korrekten sortierten Ergebnis, doch das Verfahren mit Fern-Tausch ist nicht generell stabil: Die ursprüngliche Reihenfolge gleich großer markierter Datensätze kann wechseln. Eine Sortierfunktion in unseren Python-Aufgaben arbeitet auf einer Kopie und gibt diese zurück. Die Funktionstests prüfen Ergebnisse und Randfälle; sie ersetzen nicht die fachliche Kontrolle des verwendeten Verfahrens.

  • Selectionsort
  • Minimumposition
  • Präfix
  • Restbereich
  • Tausch
  • Wertvergleich

Beispiel

Start:       [6, 2, 5, 1]
i = 0: Minimum an Index 3; tausche 0 und 3
Nach Runde 1:[1, 2, 5, 6]
i = 1: Minimum steht schon an Index 1
Nach Runde 2:[1, 2, 5, 6]
i = 2: Minimum steht schon an Index 2
Ergebnis:    [1, 2, 5, 6]
Wertvergleiche: 3 + 2 + 1 = 6

Typische Fehler

  • Schon während der Minimumsuche beliebige Werte tauschen
  • minimum als Wert statt als Index benutzen
  • Den bereits fertigen Präfix erneut durchsuchen
  • Unveränderte Runde mit einem Fehler verwechseln

Kurz zusammengefasst

Selectionsort wählt pro Runde das Minimum des Restbereichs und vergrößert den fertigen Präfix um genau eine Position.

Abi-Bezug

Notiere Rundenende, Minimumindex und fertigen Präfix. Zähle nur die ausdrücklich definierten Wertvergleiche, nicht zusätzlich Schleifenbedingungen.

Jetzt selbst ausprobieren

Prüfe deine Lösung automatisch. Bei Bedarf helfen dir ein Tipp und anschließend die Musterlösung.

BPE 7J21 Punkteleicht

Selectionsort: die erste fertige Position

Noch nicht begonnen

Aufgabenstellung

Start: [7, 3, 5, 2]. Suche das Minimum im ganzen Restbereich von links nach rechts und tausche es erst nach der Suche mit Index 0. Wie lautet die Liste nach dieser ersten Selectionsort-Runde? Antworte kommagetrennt; eckige Klammern sind optional.

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Eine Runde besteht aus der vollständigen Minimumsuche und genau dem anschließenden Positionstausch.
  2. Es werden die Plätze 0 und 3 vertauscht; die anderen Plätze bleiben unverändert.
Lösung anzeigen
Das Minimum 2 steht an Index 3. Der abschließende Tausch von Index 0 und 3 ergibt [2, 3, 5, 7]. Der mittlere Rest wird noch nicht umgeordnet.
BPE 7J21 Punkteleicht

Selectionsort: zwei Runden

Noch nicht begonnen

Aufgabenstellung

Sortiere [8, 6, 4, 1, 5] aufsteigend mit Selectionsort: je Runde das erste Minimum des Restbereichs suchen, dann mit dessen linker Grenze tauschen. Gib den Zustand nach zwei vollständigen Runden an, kommagetrennt mit optionalen eckigen Klammern.

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Nach Runde 1 bleibt Index 0 fest; die zweite Suche beginnt erst an Index 1.
  2. Das zweite Restminimum ist 4, nicht 5; nur seine Position wird mit der linken Restgrenze vertauscht.
Lösung anzeigen
Runde 1 tauscht 8 und 1: [1, 6, 4, 8, 5]. In Runde 2 ist 4 das Restminimum an Index 2; der Tausch mit Index 1 ergibt [1, 4, 6, 8, 5].
BPE 7J22 Punktemittel

Gleiche Minima eindeutig behandeln

Noch nicht begonnen

Aufgabenstellung

Start: [4, 2, 2, 3]. Selectionsort setzt minimum = 0 und ersetzt den Minimumindex beim Durchlauf nur bei a[j] < a[minimum], nicht bei Gleichheit. Nach der Suche wird mit Index 0 getauscht. Gib die Liste nach dieser einen Runde an, kommagetrennt mit optionalen eckigen Klammern.

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Ein neuer Kandidat muss streng kleiner sein; Gleichheit reicht nicht.
  2. Das zuerst gefundene Minimum steht an Index 1, nicht an Index 2.
Lösung anzeigen
Die erste 2 an Index 1 wird Kandidat. Die gleich große 2 an Index 2 ersetzt sie wegen des strengen Vergleichs nicht. Der Tausch 0/1 liefert [2, 4, 2, 3].
BPE 7J22 Punktemittel

Den Minimumindex eines Restbereichs finden

Noch nicht begonnen

Aufgabenstellung

index_minimum(a, start) liefert den Index des ersten kleinsten Werts im Bereich start bis len(a)-1. Garantiert: a ist nicht leer und 0 ≤ start < len(a). Bei gleichen Minima den früheren Index behalten; Eingabe nicht verändern.

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Speichere eine Position, nicht den kleinsten Wert selbst.
  2. Vergleiche a[j] mit a[minimum] und aktualisiere minimum nur bei streng kleinerem Wert.
Lösung anzeigen
def index_minimum(a, start):
    minimum = start
    for j in range(start + 1, len(a)):
        if a[j] < a[minimum]:
            minimum = j
    return minimum
BPE 7J22 Punktemittel

Eine Selectionsort-Runde als Funktion

Noch nicht begonnen

Aufgabenstellung

selection_runde(a, start) gibt eine neue Liste nach genau einer Selectionsort-Runde zurück: erstes Minimum ab start suchen, dann mit start tauschen. Für nichtleere Listen ist start ein gültiger nichtnegativer Index. Für a=[] wird nur start=0 übergeben; liefere dann []. Eingabe unverändert lassen.

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Die Positionen vor start bleiben unberührt, selbst wenn dort kleinere Werte stehen.
  2. Prüfe den Leerfall zuerst; verschiebe den Tausch hinter die vollständige Minimumsuche.
Lösung anzeigen
def selection_runde(a, start):
    ergebnis = a.copy()
    if len(ergebnis) == 0:
        return ergebnis
    minimum = start
    for j in range(start + 1, len(ergebnis)):
        if ergebnis[j] < ergebnis[minimum]:
            minimum = j
    ergebnis[start], ergebnis[minimum] = ergebnis[minimum], ergebnis[start]
    return ergebnis
BPE 7J22 Punktemittel

Selectionsort vollständig implementieren

Noch nicht begonnen

Aufgabenstellung

selection_sort(a) soll eine neue, aufsteigend sortierte Zahlenliste zurückgeben. Implementiere Selectionsort mit Minimumsuche im Restbereich und anschließendem Tausch. Leere Liste, ein Element, negative Werte und Wiederholungen sind erlaubt. Verändere a nicht. Die Tests prüfen das Verhalten; begründe das Verfahren zusätzlich anhand der Schleifen.

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Die äußere Schleife legt die nächste fertige Position i fest; die innere sucht nur rechts davon.
  2. Setze minimum zu Beginn jeder äußeren Runde wieder auf i und tausche erst nach der inneren Schleife.
Lösung anzeigen
def selection_sort(a):
    ergebnis = a.copy()
    for i in range(len(ergebnis) - 1):
        minimum = i
        for j in range(i + 1, len(ergebnis)):
            if ergebnis[j] < ergebnis[minimum]:
                minimum = j
        ergebnis[i], ergebnis[minimum] = ergebnis[minimum], ergebnis[i]
    return ergebnis
BPE 7J23 Punkteanspruchsvoll

Ein fertiger Selectionsort-Präfix

Noch nicht begonnen

Aufgabenstellung

Selectionsort hat seine ersten k Runden abgeschlossen. Welche Aussagen gelten für das Präfix aus den ersten k Positionen? Wähle alle richtigen Antworten.

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Betrachte, warum in jeder Runde genau das kleinste noch nicht festgelegte Element ausgewählt wird.
  2. Die nächste Minimumsuche beginnt bei k und greift nicht mehr auf die fertigen Positionen als Tauschziele zu.
Lösung anzeigen
Jede Runde setzt das nächste Minimum an die nächste freie Position. Dadurch ist der Präfix sortiert und enthält die kleinsten Werte; nur der Rest bleibt noch zu bearbeiten.
BPE 7J23 Punkteanspruchsvoll

Wertvergleiche bei fünf Elementen

Noch nicht begonnen

Aufgabenstellung

Die festgelegte Selectionsort-Variante verarbeitet fünf Elemente. Für i = 0,1,2,3 prüft sie alle j = i+1 ... 4 mit a[j] < a[minimum]. Wie viele solche Wertvergleiche erfolgen insgesamt? Zähle keine Schleifenbedingungen und keine Tausche. Antworte nur mit einer ganzen Zahl.

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Die erste Runde vergleicht den Startkandidaten mit den vier weiteren Elementen.
  2. Addiere die schrumpfenden Anzahlen 4 + 3 + 2 + 1.
Lösung anzeigen
Die vier Runden benötigen 4, 3, 2 und 1 Wertvergleiche. Insgesamt sind das 10, unabhängig von den konkreten Werten.

Lektionsabschluss

Bearbeite Aufgaben, um deine Auswertung zu sehen.