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

📄 binarysearch.java

📁 有大量的java的实例
💻 JAVA
字号:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class BinarySearch 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[] ComparePt = new int[10];	//保存对分法的比较中间点
 String msg = "";		//查找结果信息

 public void init()
 {
	add(prompt);
	add(input);
	add(sortbtn);
	input.addActionListener(this);
	sortbtn.addActionListener(this);
 }
 public void paint(Graphics g)
 {
	for(int i=0;i<DataArray.length;i++)
         g.drawString(Integer.toString(DataArray[i]),10+30*i,40);
	for(int i=0;i<ComparePt.length;i++)
	 g.drawString(Integer.toString(ComparePt[i]),10+30*i,70);
	g.drawString(msg,10,100);
 }
 public void actionPerformed(ActionEvent e)
 {
	if(e.getSource() == 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.getActionCommand() == "排序")
	{
		SortProcedure();
		sortbtn.setLabel("查找");	//转换到查找功能
		prompt.setText("请输入欲查找数据:");
		input.setVisible(true);		//输入查找数据
		input.setText("");
		repaint();
	}
	if(e.getActionCommand() == "查找")	//启动查找功能
	{	
		int k = BiSearch(Integer.parseInt(input.getText()));
		if(k == -1)	//没找到
			msg = "序列中没有匹配的数据";
		else
			msg = "匹配的数据在序列的第" + k + "个位置";
		repaint();
	}
 }
 void SortProcedure()
 {
	int pass,i,temp;

	for(pass=1;pass<DataArray.length;pass++) //插入多次,无序子列在减少
	{
	 temp = DataArray[pass];	//本次插入到有序子列中的数据
           for(i=pass-1;i>=0;i--) 	//一次插入过程,有序子列在增长
           {	
		if(DataArray[i] <= temp) //选择有序子列中的合适位置
                  break;
		else
	          DataArray[i+1] = DataArray[i];
	   }
	   DataArray[i+1] = temp;	//i+1是合适的位置,插入新数据
	}
 }
 int BiSearch(int key)//根据关键值key查找数据并返回其位置,若查找失败返回-1
 {
	int low=0;			//查找范围下限
	int high=DataArray.length-1;	//查找范围上限
	int mid;			//中间数据点
	int i = 0;

	while(low <= high)
	{
		mid = (high + low)/2;
		ComparePt[i++] = DataArray[mid];
		if(DataArray[mid] == key)		//找到了数据
			return mid;
		else if(DataArray[mid] < key)	//缩小查找范围到后半个序列
			low = mid + 1;
		else		 	//缩小查找范围到前半个序列
			high = mid - 1;
        }
        return -1;		//查找失败
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -