Javakurs/Übungsaufgaben/SelectionSort/Musterlösung
< Javakurs | Übungsaufgaben | SelectionSort
class Selectionsort{ public static void main(String[] args){ // Erzeugen uns 100 Zufallszahlen, die wir sortieren wollen int[] arr = new int[100]; for(int i=0 ; i<arr.length ; i++){ arr[i] = (int) (Math.random() * 1000); } // Das Array wird sortiert sort(arr); System.out.println(isSorted(arr)); } public static void sort(int[] array){ int n = array.length; // Nehme das erste Element, tausche es mit dem Minimum des Restarrays // Fahre mit den nächsten fort... for(int i = 0; i < n; i++){ int min = findMinimum(array , i, n-1); swap(array, i, min); } } // tauscht zwei Werte in einem Array public static void swap(int[] array, int position1, int position2) { // Ueberpruefe ob position1 und position 2 im array vorhanden sind. if(array.length > position1 && array.length > position2){ // Elemente tauschen int temp; temp = array[position1] ; array[position1] = array[position2]; array[position2] = temp; } } // ermittelt die Position des kleinesten Wertes in einem Teilarray. public static int findMinimum(int[] array, int startIndex, int endIndex) { int ergebnis = startIndex; // Schleife geht array innerhalb der Indexgranzen durch for(int i=startIndex+1 ; i<=endIndex ; i++){ // Wenn ein Wert kleiner ist wird der Index in ergebnis gespeichert if( array[ergebnis]>array[i] ){ ergebnis = i; } } return ergebnis; } // testet, ob das Array sortiert ist oder nicht public static boolean isSorted(int[] array) { for(int i=0; i<array.length-1 ; i++){ // Wenn zwei nebenweinander liegende Werte falsch sortiert sind, dann wird false zurueckgegeben if( array[i] > array[i+1]){ return false; } } return true; } }