Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.JPanel;
- import javax.swing.SwingWorker;
- public abstract class SortThread<T extends Comparable<T>> extends SwingWorker<Void, Void> {
- protected T[] array;
- protected JPanel view;
- protected final int delay;
- protected void repaintDelay()
- {
- view.repaint();
- try {
- Thread.sleep(delay);
- } catch (InterruptedException e) {
- return;
- }
- }
- public SortThread(T[] array, JPanel view, int delay)
- {
- this.array = array;
- this.view = view;
- this.delay = delay;
- }
- }
- //EXAMPLE:
- import javax.swing.JPanel;
- public class BubbleSortThread<T extends Comparable<T>> extends SortThread<T> {
- public BubbleSortThread(T[] array, JPanel view, int delay) {
- super(array, view, delay);
- }
- private void bubbleSort(T[] a, BubbleSortThread<T> parent) {
- for (int j = 0; j < a.length; j++) {
- boolean sorted = true;
- // Elements beyond length - (j + 1) are sorted, so don't check them
- for (int i = 0; i < a.length - (j + 1) && !parent.isCancelled(); i++) {
- if (a[i].compareTo(a[i + 1]) > 0) {
- T temp = a[i];
- a[i] = a[i + 1];
- a[i + 1] = temp;
- sorted = false;
- }
- repaintDelay();
- }
- // Stop if the array is sorted
- if (sorted || parent.isCancelled())
- break;
- }
- }
- @Override
- protected Void doInBackground() throws Exception {
- bubbleSort(array, this);
- view.repaint();
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement