php 二分查找
<?php /**二分查找:查找一个值在数组中的位置 * @$arr:操作的数组,前提是按顺序排列 * @$val:查找的值 * @$start:查找的起始位置,默认从数组的第一个数找起 * @$end:查找的结束位置 **/ function binarySearch($arr, $val, $end, $start=0){ while($start <= $end){ $mid = ceil($start + ($end - $start) / 2); if($arr[$mid] == $val){ return $mid; }elseif($arr[$mid] > $val){ $end = $mid -1; }else{ $start = $mid +1; } } return -1; //这里的-1,是表示如果不在数组范围的时候,所返回的值 }
header('Content-Type:text/html; charset=utf-8');
//产生一个数组 $arr = range(10,20); echo '<pre>'; print_r($arr); echo '</pre>'; $start = 0; $end = count($arr) - 1; $findVal = rand(10,20 ); $index = binarySearch($arr, $findVal, $end, $start); printf("查找的值 '%d' 在数组中的下标 '%s'", $findVal, $index); ?>
作者:Wicub
免责声明:文章、笔记等仅供分享、探讨、参考等学习之用,因此造成的任何后果概不负责。(如有错误、疏忽等问题,欢迎指正、讨论,谢谢)
本文版权归作者和博客园共有,欢迎转载,但请务必在文章页面明显位置给出原文连接,谢谢配合。