Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/SelectionSort/Musterlösung

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;
    }
    
}