详细步骤都在注释里
public class BinarySearch {
public static void binarySearch(int arr[],int low,int high,int key)
{
/*
* 分析思路:
* 在整个数组范围内找元素
* 等价于
* 在左边找
* 与中间元素对比
* 在右边找
*
* 注意:二分查找的前提是数组有序
*
* */
if(low>high)
{
System.out.println("没有该元素");
return;
}
int mid=(low+high)>>>1;//得到中间位置的下标,不会溢出
int midEle=arr[mid];
if(key<midEle)
binarySearch(arr,low,high-1,key);
else if(key>midEle)
binarySearch(arr, mid+1,high , key);
else {
System.out.println("找到了,该元素在数组中的位置是:"+mid);
return;
}
}
public static void main(String[] args) {
binarySearch(new int []{1,2,3,4,5}, 0, 4, 9);
}
}