二分查找法,每次查找的数据,都是上一次的一半。所以速度很快。不过需要建立在已经排序好的数组上。
<?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);