Я пытаюсь пошагово отсортировать несколько строк на графике, чтобы показать, как разные алгоритмы работают с графическим интерфейсом и таймерами.
Вот как это выглядит:
]
У меня есть Bubble sort для работы следующим образом:
timer = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int m = 0; m < tal.length; m++) {
for (int n = 0; n < m; n++) {
if (tal[n] > tal[n + 1]) {
int temp = tal[n];
tal[n] = tal[n + 1];
tal[n + 1] = temp;
grafPanel.repaint();
}
}
}
}
});
timer.start();
Однако, когда я пытаюсь сделать что-то подобное с сортировкой вставок , весь график рисуется немедленно (не на шаг за один раз, как я хочу).
Вот этот код:
timer = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int n = 0; n < tal.length; n++) {
int temp = tal[n];
int i = n - 1;
while (i >= 0 && tal[i] > temp) {
tal[i + 1] = tal[i];
i--;
}
tal[i + 1] = temp;
grafPanel.repaint();
}
}
});
timer.start();
Вот каковы начальные и конечные результаты (они отлично работают).
Edit:
Я понимаю, что на самом деле я не вставляю числа в массив до полной сортировки, а затем перекрашиваю. Я все еще не могу это исправить, хотя (не могу представить это). Более конкретная помощь будет оценена. Спасибо!