Der Algorithmus
package AlgoDat;
public class SelectionSort {
// Zu sortierendes Array
private int myArray[] = {22, 6, 2, 4, 10, 3, 9, 7, 5, 8, 1};
// Hält die Klasse als instanziertes Objekt
@SuppressWarnings("unused")
private static SelectionSort program;
// Hilfsfunktion für das Ausgeben des Arrays
public void OutputOfIntArray(int myArray[])
{
if (myArray != null)
{
for (int i = 0; i < myArray.length; i++) {
if (i > 0) System.out.print(";");
System.out.print(myArray[i]);
}
System.out.println();
}
}
// Konstruktor
public SelectionSort()
{
System.out.print("Vorher: ");
this.OutputOfIntArray(myArray);
// Laufe das zu sortierende Array von Anfang bis Ende durch
for (int idxSortierterBereich = 0; idxSortierterBereich < myArray.length - 1 ; idxSortierterBereich++)
{
// Starte an der Index-Position der äußersten Schleife - davor ist schon alles sortiert
int indexPivotElement = idxSortierterBereich;
for (int idxUnsortierterBereich = idxSortierterBereich + 1; idxUnsortierterBereich < myArray.length; idxUnsortierterBereich++)
{
// ... und merke dir das kleinste Element
if (myArray[indexPivotElement] > myArray[idxUnsortierterBereich])
{
indexPivotElement = idxUnsortierterBereich;
}
}
// Dieser Code tauscht das neu gefundene Minimum mit dem Element am aktuellen Index der äußeren Schleife
int swapVar = myArray[indexPivotElement];
myArray[indexPivotElement] = myArray[idxSortierterBereich];
myArray[idxSortierterBereich] = swapVar;
System.out.print("Tausche: ");
this.OutputOfIntArray(myArray);
}
System.out.print("Nachher: ");
this.OutputOfIntArray(myArray);
}
public static void main(String[] args)
{
// Instanziere aus den statischem Programm ein echtes Objekt
// damit nicht alle Methoden und Variablen static sein müssen.
program = new SelectionSort();
}
}
Ausgabe
Vorher: 22;6;2;4;10;3;9;7;5;8;1
Tausche: 1;6;2;4;10;3;9;7;5;8;22
Tausche: 1;2;6;4;10;3;9;7;5;8;22
Tausche: 1;2;3;4;10;6;9;7;5;8;22
Tausche: 1;2;3;4;10;6;9;7;5;8;22
Tausche: 1;2;3;4;5;6;9;7;10;8;22
Tausche: 1;2;3;4;5;6;9;7;10;8;22
Tausche: 1;2;3;4;5;6;7;9;10;8;22
Tausche: 1;2;3;4;5;6;7;8;10;9;22
Tausche: 1;2;3;4;5;6;7;8;9;10;22
Tausche: 1;2;3;4;5;6;7;8;9;10;22
Nachher: 1;2;3;4;5;6;7;8;9;10;22
Komplexität: O-Notation (Ordnung)
Zwei verschaltete Schleifen.
Die äußere Schleife läuft von 1 bis n;
Die innere Schleife läuft vom Element der äußeren Schleife bis Schluss -> also n/2, da der Bereich immer kleiner wird.
O(T(n)) = O(n²)