文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php教程>PHP实现的折半查找算法示例讲解

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

时间:2020-12-29  来源:互联网

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

QQ浏览器截图20201229140435.png

本文实例讲述了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].'

查找次数:'.$time.'

';

}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.'

值为:'.$arr[$mid].'

查找次数:'.$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文章请关注本站。

相关阅读更多 +
最近更新
排行榜 更多 +
元梦之星最新版手游

元梦之星最新版手游

棋牌卡牌 下载
我自为道安卓版

我自为道安卓版

角色扮演 下载
一剑斩仙

一剑斩仙

角色扮演 下载