``
**
- Java中的二分查找算法
**
public class DoubleSearch {
public static void main(String[] args) throws IOException{
try
{
System.out.println("请输入数组:");
Scanner input=new Scanner(System.in);
String x=input.nextLine();
String[] y=x.split(",| ");//去除输入中的空格和逗号
int array[]=new int[y.length];
for(int i=0;i<y.length;i++)
{
array[i]=Integer.parseInt(y[i]);
}//获取输入的数组
System.out.print("请输入查找的数:");
Scanner search=new Scanner(System.in);
int Search=search.nextInt();
int []arrayASort=ArrayASort(array);//调用冒泡排序函数获取排序后的数组
int index=ArrayIndex(arrayASort,Search);//获取寻找到的下标
for(int a:arrayASort)
{
System.out.print(a+" ");//输出排序后的数组
}
System.out.print("\n你要查找的数在第"+(index+1)+"个");
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static int[] ArrayASort(int[] array)//对数组进行升序排序
{
//冒泡排序
for(int i=0;i<array.length;i++)
{
for(int k=i;k<array.length;k++)
{
if(array[i]>array[k])
{
int x=array[i];
array[i]=array[k];
array[k]=x;
}
}
}
return array;
}
public static int ArrayIndex(int []array,int n)//n为需要查找的数据
{
int beginIndex=0;//起始位置
int endIndex=array.length-1;//结束位置
int midIndex=(beginIndex+endIndex)/2;//中间位置
//做一个死循环来循环列表;
while(true)
{
if(n<array[midIndex])
{
endIndex=midIndex-1;
}
else if(n==array[midIndex])
{
return midIndex;//找到该数据
}
else if(n>array[midIndex])
{
beginIndex=midIndex+1;
}
midIndex=(beginIndex+endIndex)/2;
if(beginIndex>endIndex)//没有找到该数据
{
return -1;
}
}
}
}