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