Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.40 KB | None | 0 0
  1. import javax.swing.JPanel;
  2. import javax.swing.SwingWorker;
  3.  
  4.  
  5. public abstract class SortThread<T extends Comparable<T>> extends SwingWorker<Void, Void> {
  6.     protected T[] array;
  7.     protected JPanel view;
  8.     protected final int delay;
  9.    
  10.     protected void repaintDelay()
  11.     {
  12.         view.repaint();
  13.         try {
  14.             Thread.sleep(delay);
  15.         } catch (InterruptedException e) {
  16.             return;
  17.         }
  18.     }
  19.    
  20.     public SortThread(T[] array, JPanel view, int delay)
  21.     {
  22.         this.array = array;
  23.         this.view = view;
  24.         this.delay = delay;
  25.     }
  26. }
  27.  
  28. //EXAMPLE:
  29.  
  30. import javax.swing.JPanel;
  31.  
  32. public class BubbleSortThread<T extends Comparable<T>> extends SortThread<T> {
  33.  
  34.     public BubbleSortThread(T[] array, JPanel view, int delay) {
  35.         super(array, view, delay);
  36.     }
  37.  
  38.     private void bubbleSort(T[] a, BubbleSortThread<T> parent) {
  39.         for (int j = 0; j < a.length; j++) {
  40.             boolean sorted = true;
  41.  
  42.             // Elements beyond length - (j + 1) are sorted, so don't check them
  43.             for (int i = 0; i < a.length - (j + 1) && !parent.isCancelled(); i++) {
  44.                 if (a[i].compareTo(a[i + 1]) > 0) {
  45.                     T temp = a[i];
  46.                     a[i] = a[i + 1];
  47.                     a[i + 1] = temp;
  48.                     sorted = false;
  49.                 }
  50.                 repaintDelay();
  51.             }
  52.  
  53.             // Stop if the array is sorted
  54.             if (sorted || parent.isCancelled())
  55.                 break;
  56.         }
  57.     }
  58.  
  59.     @Override
  60.     protected Void doInBackground() throws Exception {
  61.         bubbleSort(array, this);
  62.         view.repaint();
  63.         return null;
  64.     }
  65.  
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement