Selection sort so richtig?
1 Antwort
Beim Selection Sort wird doch die kleinste Nummer gesucht und an die erste Stelle gesetzt, und mit der Zahl die vorher dort stand, den Platz tauscht.
Zwei Schleifen sind richtig, allerdings sucht die innere Schleife den Platz mit der kleinsten Zahl. Dabei brauchst du eine Variable zum Speichern der kleinsten Zahl und eine für den Array Spot auf dem sie sich befindet.
Zur Veranschaulichung:
https://riptutorial.com/sorting/topic/6170/selection
Code Beispiel zur Verdeutlichung:
public class MyClass {
public static void main(String args[]) {
int[] zahlen = {2,3,4,6,8,9,1,4,3,7,8,5,0,11,15,8,22};
int location;
int value;
//Unsortiert ausgeben
System.out.print("Zahlen unsortiert: ");
for (int k=0; k < zahlen.length; k++) {
System.out.print(zahlen[k] + ", ");
}
//Sortieren
for (int i=0; i<zahlen.length-1; i++) {
value=zahlen[i];
location=i;
for (int j=(i+1); j<zahlen.length; j++) {
if (zahlen[j] < value) {
location = j;
value = zahlen[j];
}
}
zahlen[location]=zahlen[i];
zahlen[i]=value;
System.out.println("");
for (int k=0; k < zahlen.length; k++) {
System.out.print(zahlen[k] + ", ");
}
}
//Soriert ausgeben
System.out.print("\nZahlen sortiert: ");
for (int k=0; k < zahlen.length; k++) {
System.out.print(zahlen[k] + ", ");
}
}
}
Kannst du ja auf einem Online-Compiler mal laufen lassen. Zum Beispiel dem hier: