import java.util.Scanner; import java.util.Arrays; public class Sort { public static void selectionsort(int[] numbers) { // Suche in der Folge das kleinste Element und // vertausche es mit dem ersten Element. Wiederhole // mit dem 2., dem 3. etc... for(int i = 0; i < numbers.length; i ++) { int smallestIndex = i; // Finde das i. kleinste for(int j = i + 1; j < numbers.length; j ++) { // j und i nicht verwechseln! if(numbers[j] < numbers[smallestIndex]) { smallestIndex = j; } } // Vertausche int tmp = numbers[i]; numbers[i] = numbers[smallestIndex]; numbers[smallestIndex] = tmp; // Warum waere hier die XOR-Variante zum // Vertauschen (siehe BubbleSort) nicht // geeignet? } } public static void bubblesort(int[] numbers) { // Sortieren mit bubble sort: Vergleiche // benachbarte Werte und vertausche sie // bis das gesamte Array in der richtigen // Reihenfolge ist for(int j = numbers.length - 1; j > 0; j--) { // Ein Durchlauf der folgenden Schleife // laesst das groesste Element einer Luftblase (Bubble) // gleich "aufsteigen" (nach hinten wandern) // [Warum?] // Daher muss man in der aeusseren Schleife Elemente // nach j nicht mehr beruecksichtigen (bereits sortiert) for(int i = 0; i < j; i ++) { if(numbers[i] > numbers[i + 1]) { // Vertausche numbers[i] und numbers[i-1] // Aufgabe: Finde eine Variante mit + und - // Hint: geht ganz aehnlich wie die // hier angefuehrte Variante mit dem // bitweisen XOR numbers[i] ^= numbers[i + 1]; numbers[i + 1] ^= numbers[i]; numbers[i] ^= numbers[i + 1]; } } } } // Aufgabenstellung: Kleinste Zahl finden public static void main(String... args) { // Andere Schreibweise fuer String[], fast... Scanner sc = new Scanner(System.in); // For the sake of simplicity and readability // keine Fehlerbehandlung :-) // n Zahlen wollen wir einlesen int n = sc.nextInt(); int[] numbers = new int[n]; // Ist uebrigens dasselbe wie int numbers[] for(int i = 0; i < n; i ++) { numbers[i] = sc.nextInt(); } // ... und mit diesen Zahlen machen wir nun einige Sachen selectionsort(numbers); // Um Arrays auszugeben muss man in Arrays // die static Methode toString verwerden. System.out.println(Arrays.toString(numbers)); } }