java二分查找递归_递归实现二分查找

/*

*二分查找输入查找值,返回查找值的数组下标(查找的数组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);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值