📄 bucketsort.java
字号:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class BucketSort extends Applet implements ActionListener //定义主类
{
Label prompt = new Label("请输入欲排序的整数数据(最多10个):");
TextField input = new TextField(5);
Button sortbtn = new Button("排序");
int[] DataArray = new int[10]; //保存待排序数据的数组
int DataInputed = 0; //已输入数据的统计
int[][] SortPro = new int[11][10]; //保存排序过程的二维数组
public void init() //初始化
{
add(prompt); //将提示、输入区域、按钮加入Applet
add(input);
add(sortbtn);
input.addActionListener(this);
sortbtn.addActionListener(this);
}
public void paint(Graphics g)//打印排序全过程
{
for(int i=0;i<SortPro.length;i++) //二维数组的行数
for(int j=0;j<SortPro[i].length;j++) //二维数组第i行中的数据个数
g.drawString(Integer.toString(SortPro[i][j]),10+30*j,40+20*i);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == input)//用户在input中输入并回车时
{ //记录数据
DataArray[DataInputed++] = Integer.parseInt(input.getText());
if(DataInputed < 10)
{
prompt.setText("已输入" + DataInputed + "个数据,请继续");
input.setText(""); //准备输入下一个数据
}
else //已输入10个数据
{
prompt.setText("已输入10个数据,不能再输入了");
input.setVisible(false); //隐藏其输入区域
}
}
if(e.getSource() == sortbtn) //用户单击按钮,启动排序过程
{
for(int i=0;i<DataArray.length;i++) //记录未排序的原始数据
SortPro[0][i] = DataArray[i];
SortProcedure(); //调用排序方法
repaint();
}
}
void SortProcedure()
{
int bucket[][] = new int[10][DataInputed+1];//最后一行保存这一行的数据个数
int pass =0;//扫描轮数计数
do
{
for(int i=0;i<DataInputed;i++)
{
bucket[i][DataInputed] = 0;
}
for(int i=0;i<DataInputed;i++)//分散扫描
{
int temp1 = (int)Math.pow(10,pass);
int temp2 = DataArray[i]/((int)(Math.pow(10,pass)))%10;
bucket[temp2][bucket[temp2][DataInputed]++] = DataArray[i];
}
int k=0;
for(int i=0;i<10;i++)//集中扫描
for(int j=0;j<bucket[i][DataInputed];j++)
DataArray[k++] = bucket[i][j];
for(int i=0;i<DataArray.length;i++) //记录本轮选择后数据排列情况
SortPro[pass][i] = DataArray[i];
pass++;
}while(bucket[0][DataInputed] != DataInputed);//一轮扫描
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -