二分查找法,每次查找的数据,都是上一次的一半。所以速度很快。不过需要建立在已经排序好的数组上。
<?php
function binarySearch(array $arr, $target) {
$low = 0;
$max = count($arr) - 1;
while($low <= $max) {
$mid = (int)(($max + $low) / 2);
if ($arr[$mid] > $target) $max = $mid - 1;
if ($arr[$mid] < $target) $low = $mid + 1;
if ($arr[$mid] == $target) return $mid;
}
return false;
}
echo binarySearch(array(1,2,3,4,5,6,7,8,9,10), 3);