Best Practice Merge-Sort als Baum darstellen

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, ... ?)
 
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?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben