import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.util.*;

public class RadixSort extends JApplet {
JButton sort;
JTextArea ta;
final int size=20;
final int RADIX=10;
final int numdigits=3;
StringTokenizer list;
String theLists[]=new String[RADIX];
String longList;
 

public void init(){
 longList="";
Random thing=new Random();
sort =new JButton("sort");
ta=new JTextArea(20,50);
for(int j=0;j<size;j++){
  int z=thing.nextInt(1000);
  longList=longList+" "+z;

}
Container c=getContentPane();
 c.setLayout(new BorderLayout());
 c.add(ta,BorderLayout.CENTER);
 c.add(sort,BorderLayout.SOUTH);
 ta.setText(longList);
 sort.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   ta.append("\nsort\n");
   radixSort();
   ta.append(longList);
  }
 }
 );

}

public int getDigit(int num,int digitnum){
int dig,m=0;
do{
 dig=num%10;
 num/=10;
 digitnum--;
}
while(digitnum>=0);
return dig;
}
 

public void radixSort(){

for(int k=0;k<numdigits;k++)
{ for(int j=0;j<RADIX;j++)
    theLists[j]=" ";
 list=new StringTokenizer(longList);
 while(list.hasMoreTokens())
 {
  int num=Integer.parseInt(list.nextToken());
  int digit=getDigit(num,k);//get kth digit
  theLists[digit]=theLists[digit]+" "+num;
 }
 longList=" ";
 for(int j=0;j<RADIX;j++)
    longList+=theLists[j]; //add all lists together

}//for each digit

}//sort
 

}//class