/*
*二分查找输入查找值,返回查找值的数组下标(查找的数组arr,数组的开头start,数组的结尾end,查找的值key)
*先判断输入的start(开头)是否比end(结尾)大,如果比end(结尾)大返回-1;
*在以上的大范围之下,最先的是对arr[mid](开头的值和结尾的值与中间数组的值)进行判断,如果和key(查找的值)的数组一样,返回mid(该中间数组的下标值),结束
*如果以上不成立,再判断arr[mid](中间数组的值)是不是小于需要查找的值,如果小于,则说明key(查找的值)在数组右边,那么给mid附值给一个新的开始值newstart,然后递归,start的值改变为newstart
*如果以上也不成立,那么就只剩下arr[mid]>key,则说明key(查找的值)在数组左边,给mid附值给一个新的结束值newend,然后递归,end的值改变为newend
*/public int erfenchazhao(int[] arr,int start,int end,int key) {
if(start>end) {
//如果输入的数组开头比结尾大那么直接结束,返回负一
return -1;
}else {
int mid = (end-start)/2;
//新建中间值mid
if(arr[mid]==key)
//中间值和查找值一样
{
return mid;
}else if(arr[mid]
//中间值比查找值小,查找值在它右边,舍弃数组左边,中间值变成新的开始值,递归直到查找和中间相等返回中间值mid。
{
int newstart = mid;
return erfenchazhao(arr,newstart,end,key);
}else
//中间值比查找值大,查找值在它左边,舍弃数组右边,中间值变成新的结束值,递归直到查找和中间相等返回中间值mid。
{
int newend =mid;
return erfenchazhao(arr,start,newend,key);
}
}
}