Hallo, ich will für die Schule den Merge-Sort-Algorithmus in Java visualisieren. Dafür habe ich folgenden Code:
Das funktioniert auch einwandfrei, allerdings ist es für eine Visualisierung zu schnell. Ich nutze Balken für die Darstellung die am Ende der Länge nach sortiert sein sollen. Auch das geht, allerdings so schnell, dass man nur das Endergebnis sieht und nicht die einzelnen Veränderungen, Wie würde ich das so ändern, dass das System nach jedem Schritt so lange pausiert, so dass man die Veränderungen sehen kann?
Java:
private int[] data = {10,20,30,40,90,120,100,140,70,50,80,110};
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);
}
panel.setData(data);
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--;
}
}
}
Das funktioniert auch einwandfrei, allerdings ist es für eine Visualisierung zu schnell. Ich nutze Balken für die Darstellung die am Ende der Länge nach sortiert sein sollen. Auch das geht, allerdings so schnell, dass man nur das Endergebnis sieht und nicht die einzelnen Veränderungen, Wie würde ich das so ändern, dass das System nach jedem Schritt so lange pausiert, so dass man die Veränderungen sehen kann?