Best Practice Merge-Sort als Baum darstellen

Diskutiere Merge-Sort als Baum darstellen im Java Basics - Anfänger-Themen Bereich.
UnknownInnocent

UnknownInnocent

Hallo,
ich habe folgenden Code für Merge-Sort:
Java:
public class algorithm{
    
    private Panel panel;
    
    public algorithm(Panel panel) {
        this.panel = panel;
    }

    class SorterThread extends Thread {

        public void run() {
            sort(0, data.length-1);
            panel.setDefault();
        }

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

        private void merge(int l, int q, int r) {
            int[] arr = new int[data.length];
            int i, j;
            for (i = l; i <= q; i++) {
                arr[i] = data[i];
            }
            for (j = q + 1; j <= r; j++) {
                arr[r + q + 1 - j] = data[j];
            }
            i = l;
            j = r;
            for (int k = l; k <= r; k++) {
                if (arr[i] <= arr[j]) {
                    data[k] = arr[i];
                    i++;
                } else {
                    data[k] = arr[j];
                    j--;
                }
                try {
                    current = k;
                    left = l;
                    right = r;
                    SwingUtilities.invokeLater(() ->update());
                    while(pause) Thread.sleep(50);
                   Thread.sleep(speed);
                } catch (InterruptedException ex) {}
            }
        }
    }

    private int[] data = {123, 174, 79, 191, 72, 118, 94, 142, 173, 163};
    private int speed = 100;
    private int current = -1, left, right;
    private boolean pause = false;
    
    private void update() {
        synchronized(data) {
            panel.setData(data, current, left, right);
        }
    }
    
    public void run() {
        new SorterThread().start();
    }
    
    
    public int[] getData() {
        return data;
    }
}
Das ganze stelle ich jetzt grafisch, mit Balken, dar, würde aber gerne noch ein 2. Fenster hinzufügen, in dem Schrittweise ein Baumdiagramm zum Ablauf erstellt wird. Das würde ja ungefähr so aussehen:12751

Mein Hauptproblem ist jetzt, dass ich nicht weiß, wie ich die Informationen, die ich dafür brauche erfasse und wie ich sie am besten speichere (Array, ArrayList, ... ?)
 
UnknownInnocent

UnknownInnocent

Hm.. hätte man auch selbst drauf kommen können xD.

Naja ok. Allerdings habe ich jetzt eine größere Menge Arrays. Gibt es da irgendeine simple Möglichkeit die grafisch als Baum anzuordnen, also ungefähr so wie in dem Bild?
 
Thema: 

Merge-Sort als Baum darstellen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben