The basic structure is:
class Sorting extends Applet implements Runnable { // declare some buttons // declare the constants SWAPPING=1 and SWAPPED=2 // declare the global data structures table and status. public void init() { // layout the Applet's panel and validate (show) it } void initialize( int [] table, int [] status ) { // fill in random data to table for the sort } public boolean action ( Event e, Object a ) { // handle the "sortButton" event } boolean sortOneStep( int [] table, int [] status ) { // (1) Look at status and determine if this is a swapping step // or a find-min step // (2) If a swapping step, swap the two locations marked // SWAPPING in status, and mark then SWAPPED // (3) If a find-min step, find the min and mark it SWAPPING } public void run() { // the thread which does the algorithm animation. // while sortOneStep returns true, // (1) redraw the screen // (2) sleep a little bit } } class SortingView extends Panel { SortingView( int [] table, int [] status ) { // constructor method, remember table and status } public void paint( Graphics gc ) { // this is how you repaint the SortingView, // put a square of color, according to status[i] in // location (i,table[i]). (not exactly, both i and // table[i] are scaled and translated to fit. } }