热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

根据已知有序数组,实现二分查找算法(折半查找),输入任意数字,返回该数字在数组中的下标位置。

根据已知有序数组,实现二分查找算法(折半查找),输入任意数字,返回该数字在数组中的下标位置。要求࿱

根据已知有序数组,实现二分查找算法(折半查找),输入任意数字,返回该数字在数组中的下标位置。

要求:编写函数实现上述要求,必须使用两种方法实现,一种递归,一种非递归

/*** 二分查找 非递归* &#64;param Array $arr 待查找的数组* &#64;param Int $key 要查找的关键字* &#64;return Int*/function bin_search(Array $arr,$key){$high &#61; count($arr);if($high <&#61; 0)return -1;$low &#61; 0;while($low <$high){//当前查找区间arr[low..high]非空$mid&#61;intval(($low &#43; $high) / 2);if($arr[$mid] &#61;&#61; $key)return $mid; //查找成功返回if($arr[$mid] > $key)$high &#61; $mid - 1; //继续在arr[low..mid-1]中查找else$low &#61; $mid &#43; 1; //继续在arr[mid&#43;1..high]中查找}return -1; //当low>high时表示查找区间为空&#xff0c;查找失败}

 

-------------------------------

//递归 2分function bin_search2(array $arr,$key,$begin,$end){if($end <&#61; 0)return -1;$mid&#61;intval(($begin &#43; $end) / 2);if($arr[$mid] &#61;&#61; $key)return $mid; //查找成功返回if($arr[$mid] > $key)return $this->bin_search2($arr, $key, $begin, $mid - 1); //继续在arr[low..mid-1]中查找elsereturn $this->bin_search2($arr, $key, $mid &#43; 1, $end); //继续在arr[mid&#43;1..high]中查找}

 


推荐阅读
author-avatar
新闻联播有没有大结局__742
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有