首页 > 编程知识 正文

设计一个二分查找的递归算法,二分查找的非递归算法代码

时间:2023-05-04 12:16:17 阅读:128876 作者:4229

/*

*二分搜索输入搜索值,返回搜索值的数组下标(搜索到的数组arr、数组的开头start、数组的末尾end、搜索到的值key )

*首先判断输入的start (开头)是否大于end,如果大于end,则返回-1。

*在以上大范围内,首先判断arr[mid] (开头值、末尾值和中间数组的值),与用key )检索到的值)的数组同样地返回mid )并结束

*如果上述不成立,则判断arr[mid] (中间数组的值)是否小于要查找的值,如果小于,则表示key )位于数组的右侧,并对mid附加新的开始值newstart,递归地将开始的值设定为newstart

*如果上述内容也不成立,则只剩下arr [ mid ]密钥。 “key”(找到的值)位于数组的左侧,将mid添加一个值,提供新的结束值newend,然后递归地将结束值更改为newend

*/publicinterfenchazhao (int [ ] arr,int start,int end,int key ) {

if (开始) {

//如果输入的数组的开头大于末尾,则直接结束,返回负1

返回- 1;

}else {

int mid=(结束-开始)/2;

//新中间值mid

if(ARR[mid]==key () () ) ) ) ) ) ) )。

//中值与查找值相同

{

返回mid;

}elseif(ARR[mid]

//中值小于查找值,查找值抛弃其右、左数组,中值变为新的起始值,并递归地返回中值mid直到查找与中值相等。

{

int newstart=mid;

returnerfenchazhao(ARR,newstart,end,key );

}else

//中值大于查找值,查找值在其左侧,舍弃数组的右侧,中值变为新的结束值,递归地返回中值mid,直到查找与中央相等。

{

int newend=mid;

returnerfenchazhao(ARR,start,newend,key );

}

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。