Obwohl Ihre spezifische Frage zum Austauschen in 3
leicht zu beantworten ist, ist eine allgemeinere Version davon nicht einfach, weil die Auswahl nicht stabil ist.
Klassische Implementierung wird zum Aufnehmen des nächsten Elements zu Swap ist
if (a[i] < a[iMin])
Sobald die erste 3
3
am dritten Index, da die Bedingung auswählen in Position 0, das zweite 3
bei Index fünf getauscht wird nicht ausgewählt sein.
Die Bedingung bedeutet, dass das früheste Duplikat gemäß der Anordnung vor dem aktuellen Durchgang des Algorithmus ausgewählt wird. Diese Anordnung ist jedoch möglicherweise nicht mit der ursprünglichen Anordnung der Elemente identisch.
Soweit Duplikate weiter unten im Auswahlprozess gehen, gibt es keine Garantie, da eine kleinere Zahl vor ihnen eingefügt werden kann.
Zum Beispiel wird in dieser anfänglichen Anordnung
[3, 3, 1]
die 3
bei Index Null wird zuletzt aufgenommen werden, da die erste Iteration wird es bis zum Ende des Arrays des ganzen Weg bewegen.