分析:
首先,二分查找的规模是不断地一半一半的变化,所以它的效率是比较高的!
1.递归的变量和不变量都要写。
不变量:数组arr 待查找的key
变量:查找范围的上下界 low,high
2.找到递归出口的条件 low>high(越界 return -1)
3.递归表达式
Binary_Search(arr,mid+1,high,key);
Binary_Search(arr,mid+1,high,key);
代码如下:
public class Main
{
static int Binary_Search(int arr[],int low,int high,int key)
{
if(low>high) return -1;
int mid=(low+high)/2;
if(key<arr[mid]) return Binary_Search(arr,low,mid-1,key);
else if(key>arr[mid]) return Binary_Search(arr,mid+1,high,key);
else return mid+1;
}
public static void main(String arg[])
{
int a[]={1,2,3,4,5};
Scanner sc=new Scanner(System.in);
int key=sc.nextInt();
System.out.print(Binary_Search(a,0,a.length-1,key));
}
}