package com.ecut.javabase;

public class JavaDemo07 {
//二分查找的java实现方法
	public static void main(String[] args) {
		int b = 4;
		int a[] = {1,2,3,4,5,6,7,8,9};
		int left = 0;
		int right = a.length - 1;
		
		while(left < right) {
			for(int i = 0;i<a.length;i++)
			{
				int middle = (left + right)/2;
				if(middle < b) {
					left = middle+1;
				}
				else if(middle > b){
					right = middle-1;
				}
				else{
					System.out.println("查找成功,在数组的第"+middle+"位");
					return;
				}
			}
			System.out.println("查找失败");
		}
		

	}

}

  个人理解是:先找出头和尾,然后求出他们之间的中间值,然后中间值和要查找的值进行对比,如果中间值比查找值大,那么查找的范围就可以排除中间值右边的区域。反过来就排除中间值左边的区域、一遍一遍进行循环,知道找到中间值和两边的值相等的那个数,如果没有找到,就是说明要查找的值并不在该数组里。