importjava.util.Arrays;//导入数组包 二分查询
publicclass Lx
{
public static void main(String[] args)
{
//创建数组
int[] arr={2,6,3,11,23};
//从小到大排序,调用方法
Arrays.sort(arr);
//打印输出排序后的数组
System.out.println(Arrays.toString(arr));
//先定义第一个数,中间的数,最后个数的初始值.
int start=0;
int middle=0;
int end=arr.length-1;
//给想要找的数进行赋值
int key=2;
//while循环
while(true)
{
middle=(start+end)/2;
//判断当中间位置的那个数刚刚为key这个数,则查询成功
if(arr[middle]==key)
{
System.out.println("你要找的值在"+middle+"下标");
break;
}
//当中间位置这个数大于key,则将middle-1赋值给end继续查找
if(arr[middle]>key)
{
end=middle-1;
}
//当中间位置这个数小于key,则将middle+1赋值给start继续查找
if(arr[middle]<key)
{
start=middle+1;
}
//不存在start>end这种情况,无法查询
if(start>end)
{
System.out.println("查询结果不存在");
break;
}
}
}
}