方法一:在Arrays工具类下
eg;Arrays.binarySearch(数组名,value)
int a=Arrays.binarySearch(数组名, value);
if(a>=0)//如果返回的值是正数,则找到了
{
System.out.println(a);
}
else {
System.out.println("没有找到!");
}
方法2;一般方法遍历求二分法
package com.chngewn.java;
import java.util.Arrays;
//实现思路 每次比较中间值、折半的方式检索
//实用性:(前提:数组必须有序)
import java.util.Collections;
public class ChaZhao {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//二分查找、随机1到30个数输入到数组(输入的数不可以重复)
//对数组进行有序升序或者降序排列
//对升序后的数组进行二分查找
int a[]=new int[7];
//给数组赋值
for(int i=0;i<a.length;i++)
{
a[i]=(int)(Math.random()*30)+1;
for(int j=0;j<i;j++)
{
if(a[j]==a[i])
{
i--;
break;
}
}
}
//对数组进行遍历查询
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+"\t");
}
System.out.println();
//对数组进行升序
Arrays.sort(a);
//Arrays.sort(a,Collections.reverseOrder());
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+"\t");
}
System.out.println();
//对升序后的数组进行二分查找
int start=0;
int end=a.length-1;
int c=6;
boolean ws=true;
while(start<=end)
{
int middle=(start+end)/2;
if(c==a[middle])
{
System.out.print("可以从数组中找到下标位置为:"+middle);
ws=false;
break;//找到后退出多选结构
}
else if(c>a[middle])
{
start=middle+1;
}
else if(c<a[middle])
{
end=middle-1;
}
}
if(ws)//当数字没有进去的情况下,采用boolean类型
{
System.out.println("该数不存在这个数组中");
}
}
}