WikiDer > Direktauswahl sortieren
Es Sortieralgorithmusgerade auswahl sortieren findet immer das kleinste Element in einer Liste, um es mit dem Element zu tauschen, das dem vorherigen an der Spitze der Liste folgt.
Diese vielleicht etwas kryptische Beschreibung lässt sich am besten an einem Beispiel verdeutlichen: Die Zeile DCBA wird zunächst durch Austausch des ersten Elements ersetzt. d und das kleinste Element eineinCBd, dann durch Austausch des zweiten Elements C und das kleinste verbleibende Element BABCD, und danach ändert sich nichts.
Die Anzahl der erforderlichen Gleichungen für eine Sequenz der Länge n ist (n-1) (n-2) ... 1. Die Anzahl der erforderlichen Vertauschungen beträgt höchstens n-1.
Implementierungen
Implementierung in Java
Das untere Java-Code-Snippet sortiert die Array asKey alphanumerisch basierend auf Straight Selection:
zum(intich=0;ich<asKey.Länge-1;ich){ZeichenfolgesMin=asKey[ich];// kleinste Zeichenfolge (vorerst)intich bin dabei=ich;// Index des kleinsten Stringszum(intja=ich1;ja<asKey.Länge;ja){wenn(asKey[ja].vergleichen mit(sMin)<0){sMin=asKey[ja];ich bin dabei=ja;}}wenn(ich bin dabei!=ich){/* der kleinste String ist nicht an Position i, sondern weiter weg */asKey[ich bin dabei]=asKey[ich];asKey[ich]=sMin;}}Implementierung in C
Ein Beispiel in C ("input" ist das zu sortierende Array, "length" ist die Anzahl der Elemente im Array):
Leeregerade auswahl(intEingang[],intLänge){intich,ja,kleinste,vorübergehend;zum(ja=0;ja<Länge-1;ja){kleinste=ja;zum(ich=ja1;ich<Länge;ich){wenn(Eingang[ich]<Eingang[kleinste])kleinste=ich;}wenn(kleinste!=ja){vorübergehend=Eingang[ja];Eingang[ja]=Eingang[kleinste];Eingang[kleinste]=vorübergehend;}}}Umsetzung in Python
In Python wird dies zu:
Code
defAuswahlsortieren(Warteschlange):zumichimReichweite(len(Warteschlange)):Mindest=ich#Nimm die erste unsortierte Karte als kleinstezumjaimReichweite(ich,len(Warteschlange)):#Überlauf den Rest der unsortierten KartenwennWarteschlange[ja]<Warteschlange[Mindest]:Mindest=ja#Wenn es einen kleineren gibt, stelle seine Position auf das Minimum einWarteschlange[ich],Warteschlange[Mindest]=Warteschlange[Mindest],Warteschlange[ich]#Tausch die i-te Karte mit der kleinsten Karte