⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bucketsort.java

📁 有大量的java的实例
💻 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 + -