二分查找法是针对有序数组的进行快速查找的 start end 找到中间 middle=(start+end)/2=3
比如如果查找数字是9,中间的是5比9小,由于是有序的则此时只看后半部分数组 开始下表为 middle+1,最终还是end,
然后对后半部分的数组再进行一分为二(就是下标是5 再拿9与其比较发现找到了。)
一般start>end基本没找到,start<=end在查找中
具体程序代码:
import java.util.Scanner;
class BinarySearch
{
public static void main(String[] args)
{
int a[]={1,2,12,14,18,21,30};
int start=0 ;
int end=a.length-1;
int middle=0;
int index=-1;
Scanner input=new Scanner(System.in);
int g=input.nextInt();
while(start<=end)
{
middle=(start+end)/2;
if(g==a[middle]){
index=middle+1;
System.out.println("找到的数组第"+index);
break;
}
if(g<a[middle]){
end=middle-1;
}
if(g>a[middle]){
start=middle+1;
}
}
if(index==-1){
System.out.println("没找到的数组第");
}
if(index!=-1){
System.out.println("找到的数组第"+index);
}
}
}