Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Problem mit MergeSort - Java

Problem mit MergeSort - Java

justanothermacianer
justanothermacianer21.05.1209:27
Hallo zusammen

Muss mich für die Schule mit Sortieralgorihmen befassen und hab grade ein kleines Verständnisproblem mit der Implementierung von MergeSort in Java.

public class Mergesort { 
    public static int[] intArr = { 16, 23, 14, 7, 21, 20, 6, 1, 17, 13, 12, 9, 
            3, 19 }; 

    public int[] sort(int l, int r) { 
         
        if (l < r) { 
            int q = (l + r) / 2; 
             
            sort(l, q); 
            sort(q + 1, r); 
            merge(l, q, r); 
        } 
        return intArr; 
    } 

    private void merge(int l, int q, int r) { 
        int[] arr = new int[intArr.length]; 
        int i, j; 
        for (i = l; i <= q; i++) { 
            arr[i] = intArr[i]; 
        } 
        for (j = q + 1; j <= r; j++) { 
            arr[r + q + 1 - j] = intArr[j]; 
        } 
        i = l; 
        j = r; 
        for (int k = l; k <= r; k++) { 
            if (arr[i] <= arr[j]) { 
                intArr[k] = arr[i]; 
                i++; 
            } else { 
                intArr[k] = arr[j]; 
                j--; 
            } 
        } 
    } 

    public static void main(String[] args) { 
        Mergesort ms = new Mergesort(); 
        int[] arr = ms.sort(0, intArr.length - 1); 
        for (int i = 0; i < arr.length; i++) { 
            System.out.println(i + 1 + ": " + arr[i]); 
        } 
    } 

Die grundsäzliche Vorgehensweise von MergeSort ist mir klar, was ich jedoch nicht verstehe: Wo wird festgelegt, dass die beiden Integer Werte l und r den kleinsten bzw. größten Indexwert des Arrays darstellen sollen? Anhand dieser Werte erfolgt ja die Teilung..
Also das Programm läuft korrekt, aber mir ist nicht klar wieso. L und r wurden doch gar keine Werte zugewiesen

Für eventuelle Denkanstöße wäre ich sehr dankbar
„Mac vs PC debates make me want to throw up. Does your OS of choice work for you? Great, problem solved!“
0

Kommentare

jgraux21.05.1210:12
Mal abgesehen davon, dass der Code nicht sonderlich gut strukturiert ist, übergibst Du doch in Deiner Main in der zweiten Zeile die Arraygrenzen

int[] arr = ms.sort(0, intArr.length - 1); 

Von daher verstehe ich die Frage nicht ganz...
0
justanothermacianer
justanothermacianer21.05.1210:41

Mein Fehler, hab mich bei dem Beispiel hier so auf sort und merge festgebissen das ich Main komplett überlesen habe
Danke
„Mac vs PC debates make me want to throw up. Does your OS of choice work for you? Great, problem solved!“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.