import java.applet.Applet; 
import java.awt.*; 
import java.awt.event.*; 
class Alg extends Applet{
     static int set=1,delayTime=50;
     static boolean stop=true;
     Graphics mypen;
     Button test=new Button("start");
     int[] data={18,4,17,5,13,8,14,7,10,16,11,3,19,2,20,15,6,9,1,12};
     public Alg(){
          add(test);
          setSize(400,530);
          test.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e){
                  if(e.getSource()==test) set++;
                  Choosealg();
              }
          });
       }
     public void paint(Graphics g){
           
     }
     public void Choosealg(){
       switch(set){
              case 1:           
                   mypen.setColor(Color.black);
                   mypen.drawString("算法:Bubble\n输入:数组data[]\n输出:按非降序排列的数组data[]\n",50,50);
                   mypen.drawString("1.for i<—data.length-1 to 0",50,80);
                   mypen.drawString("2.    for j<—  0 to i",50,90);
                   mypen.drawString("3.        if a[j] > a[j+1] then",50,100);
                   mypen.drawString("4.            交换a[j] 与 a[j+1]",50,110);
                   mypen.drawString("5.        end if",50,120);
                   mypen.drawString("6.    end for",50,130);
                   mypen.drawString("7.end for",50,140);
                   break;
              case 2:        mypen.setColor(Color.black);
        mypen.drawString("算法:Selection\n输入:数组data[]\n输出:按非降序排列的数组data[]\n",50,50);
        mypen.drawString("1.for i<—data.length-1 to 0",50,80);
        mypen.drawString("2.    T<—0",50,90);
        mypen.drawString("3.    for j<— 1 to i",50,100);
        mypen.drawString("4.        if a[j] > a[T] then",50,110);
        mypen.drawString("5.            T<—j",50,120);
        mypen.drawString("5.        end if",50,130);
        mypen.drawString("6.    end for",50,140);
        mypen.drawString("7.    交换 a[i] 与 a[T]",50,150);
        mypen.drawString("8.end for",50,160);break;
           }
            switch(set){
                        case 1:Bubble(data);break;
                        case 2:Selection(data);break;
            }
     }     public void pause(){               //延时
           if(stop){return;}
           try {
                Thread.sleep(delayTime);
           } catch (InterruptedException e) {
                e.printStackTrace();
          }
           if(stop){return;}              
     }
     //冒泡排序
     public void Bubble(int a[]){
           for (int i = a.length; --i>=0;){
                if(mypen.getColor()==Color.red) mypen.setColor(Color.blue);
                else mypen.setColor(Color.red);                mypen.drawString("1.for i<—data.length-1 to 0",50,80);
                for (int j = 0; j <i; j++){
                    if(mypen.getColor()==Color.red) mypen.setColor(Color.blue);
                    else mypen.setColor(Color.red);                    mypen.drawString("2.    for j<—  0 to i",50,90);
                    mypen.drawString("3.        if a[j] > a[j+1]",50,100);
                     if(stop){return;}
                     pause();
                     if (a[j] > a[j+1]) {
                           int T = a[j];
                           a[j] = a[j+1];
                           a[j+1] = T;
                           mypen.drawString("4.            交换a[j] 与 a[j+1]",50,110);
                           pause();
                     }
                     mypen.drawString("6.    end for",50,130);
                }
            mypen.drawString("6.    end for",50,120);
           }
          mypen.drawString("7.end for",50,130);
    }
     
   //选择排序
    public void Selection(int a[]){         for (int i = a.length-1; i > 0; i--) {                if(mypen.getColor()==Color.red) mypen.setColor(Color.blue);
                else mypen.setColor(Color.red);               mypen.drawString("1.for i<—data.length-1 to o",50,80);
               mypen.drawString("2.    T<—0",50,90);
               int T = 0;               for (int j = 1; j <= i; j++) {                     if(stop){return;}
                     mypen.drawString("3.    for j<— 1 to i",50,100);
                     mypen.drawString("4.        if a[j] > a[T] then",50,110);
                     pause();
                     if(a[j] > a[T]) {             T = j;                          mypen.drawString("5.            T<—j",50,120);
       }                     mypen.drawString("5.        end if",50,130);
                     mypen.drawString("6.    end for",50,140);
                }                int temp = a[i];                a[i] = a[T];                a[T] = temp;
                mypen.drawString("7.    交换 a[i] 与 a[T]",50,150);
                pause();
        }        mypen.drawString("8.end for",50,160);
    }
}
大虾们,帮忙改一下,或重新帮忙写一个,功能就是显示算法的执行步骤。