PHP实现的折半查找算法示例讲解

PHP实现的折半查找算法示例讲解

内容导读

收集整理的这篇技术教程文章主要介绍了PHP实现的折半查找算法示例讲解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1751字,纯文字阅读大概需要3分钟

内容图文

这篇文章主要介绍了PHP实现的折半查找算法,简单描述了折半查找的原理,并结合实例形式分析了php采用递归与非递归方式实现折半查找算法的相关操作技巧,需要的朋友可以参考下

本文实例讲述了PHP实现的折半查找算法。分享给大家供大家参考,具体如下:

定义:折半查找技术,也就是二分查找。它的前提是线性表中的记录必须是关键码有序(通常从大到小有序),线性表必须采用顺序存储。

折半查找的基本思想:取中间记录作为比较对象,若给定值与中间记录的关键字,则在中间记录的关键字相等,则查找成功;若给定值小于中间记录的作伴去继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。

实现代码:

<?php//递归方式function bin_recur_search($arr,$val){
global $time;
if(count($arr) >= 1){

$mid = intval(count($arr) / 2);

$time++;

if($arr[$mid] == $val){


return '值为:'.$arr[$mid].'<br>查找次数:'.$time.'<br>';

}elseif($arr[$mid] > $val){


$arr = array_splice($arr,0,$mid);


return bin_recur_search($arr, $val);

}else{


$arr = array_slice($arr,$mid + 1);


return bin_recur_search($arr, $val);

}
}
return '未找到'.$val;}//非递归方式function bin_search($arr,$val){
if(count($arr) >= 1){

$low = 0;

$high = count($arr);

$time = 0;

while($low <= $high){


$time++;


$mid = intval(($low + $high)/2);


if($val == $arr[$mid]){



return '索引:'.$mid.'<br>值为:'.$arr[$mid].'<br>查找次数:'.$time;


}elseif($val > $arr[$mid]){



$low = $mid + 1;


}else{



$high = $mid - 1;


}

}
}
return '未找到'.$val;}$arr = array(1,3,5,7,7,9,25,68,98,145,673,8542);echo bin_recur_search($arr, 673);echo bin_search($arr, 673);?>

运行结果:

值为:673查找次数:4索引:10值为:673查找次数:4

您可能感兴趣的文章:

PHP实现的字符串匹配算法示例

PHP实现的最大正向匹配算法示例讲解

PHP性能分析工具xhprof的安装使用与相关的注意事项

以上就是PHP实现的折半查找算法示例讲解的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP实现的折半查找算法示例讲解全部内容,希望文章能够帮你解决PHP实现的折半查找算法示例讲解所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com