时间:2021-05-26
本文实例讲述了PHP基于二分法实现数组查找功能。分享给大家供大家参考,具体如下:
二分法。分别使用while循环的方法和递归调用的方法。
<?php// 二分法的使用数组必须是有序的,或升序,或降序$arr = array( 1, 3, 5, 7, 9, 13);// 递归调用(相比较好理解function bsearch_r($v, $arr, $low, $high){ if ($low > $high) {// 先判断结束条件 return -1; } $i = intval(($high + $low)/2); if ($arr[$i] > $v){ return bsearch_r($v, $arr, $low, $i-1);// 递归 } else if ($arr[$i] < $v){ return bsearch_r($v, $arr, $i+1, $high); } else { return $i; }}echo bsearch_r(1, $arr, 0, count($arr)-1);// 0echo '<hr/>';echo bsearch_r(14, $arr, 0, count($arr)-1);// -1echo '<hr/>';// while循环function bsearch($v, $arr){ $low = 0; $high = count($arr)-1;// 使用下标,注意减去1 // 注意凡是使用到while的时候,一定要防备无限循环的时候,注意终止循环的判断。 while($low <= $high){// 比如$low<=$high,这个等于号必须有。 $i = intval(($high + $low)/2); if ($arr[$i] > $v){ $high = $i-1; } else if ($arr[$i] < $v){ $low = $i+1; } else { return $i; } } return -1;// 找不到的时候返回-1}echo bsearch(13, $arr);// 5echo '<hr/>';echo bsearch(14, $arr);// -1运行结果:
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C++二分法在数组中查找关键字的方法。分享给大家供大家参考。具体如下:#in
实现二分法查找二分法查找,需要数组内是一个有序的序列二分查找比线性查找:数组的元素数越多,效率提高的越明显二分查找的效率表示:O(log2N)N在2的M次幂范围
一,二分法检索算法介绍二分法检索(binarysearch)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中。是最常用
1.模块介绍1.bisect模块为内置标准库,它实现了二分法查找算法(只要提到二分法查找,应该优先想到此模块)2.主要包含有两个函数:bisect函数(查找元素
这篇文章主要介绍了python有序查找算法二分法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下二分法