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:

https://www.jdoodle.com/online-java-compiler/