import java.applet.Applet;
import java.awt.*;
public class Sort extends Applet //定义主类 Sort
{
Label prompt=new Label("输入欲排列数(最多10个):");
TextField input=new TextField(5);
Button sort=new Button("排序");
int data[]=new int[10]; //保存输入数组
int dataput=0; //定义记录输入个数
int Sort[][]=new int[11][10]; //保存排序过程的数组
public void init()
{add(prompt); add(input); add(sort);}
public void paint(Graphics g) //打印输出全过程
{
for(int i=0;i<Sort.length;i++)
for(int j=0;j<Sort[i].length;j++)
g.drawString(Integer.toString(Sort[i][j]),10+30*j,40+20*i);
}
public boolean action(Event e,Object o)
{
if(e.target==input) //输入并保存数据过程
{
data[dataput++]=Integer.parseInt(input.getText());
if(dataput<10)
{
prompt.setText("已输入"+dataput+"个数据,请继续:");
input.setText("");
}
else
{
prompt.setText("已输入10个数据,请排序:");
input.hide(); //关闭输入区域
}
}
if(e.target==sort) //按排序按钮做排序响应
{
for(int i=0;i<data.length;i++) //记录未排序的数据
Sort[0][i]=data[i];
SortPro(); //调用排序算法
repaint();
}
return true;
}
void SortPro() //排序算法
{
int pass,i,temp,exchange;
for(pass=0;pass<data.length;pass++)
{
exchange=0; //初始化记录本轮两两交换次数
for(i=0;i<data.length-pass-1;i++) //一次扫描,将大数向后移
{ //length-pass-1每次扫描后,下次略去对最大数的比较
if(data[i]>data[i+1]) //将大数向后移
{
temp=data[i];
data[i]=data[i+1];
data[i+1]=temp;
exchange++;
}
}
for(i=0;i<data.length;i++)
Sort[pass+1][i]=data[i]; //在第i行记录第i次排序过程
if(exchange==0) //当都以从小到大顺序排列后,结束排序
return;
}
}
}