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
Eine Runde besteht aus der vollständigen Minimumsuche und genau dem anschließenden Positionstausch.
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
Nach Runde 1 bleibt Index 0 fest; die zweite Suche beginnt erst an Index 1.
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
Ein neuer Kandidat muss streng kleiner sein; Gleichheit reicht nicht.
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
Speichere eine Position, nicht den kleinsten Wert selbst.
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
Die Positionen vor start bleiben unberührt, selbst wenn dort kleinere Werte stehen.
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
Die äußere Schleife legt die nächste fertige Position i fest; die innere sucht nur rechts davon.
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
Betrachte, warum in jeder Runde genau das kleinste noch nicht festgelegte Element ausgewählt wird.
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
Die erste Runde vergleicht den Startkandidaten mit den vier weiteren Elementen.
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.