php二维数组二分查找需找数组中某一元素下标
如果你的数组有特殊性:数组元素大小有序排序,这样的话,你应该用二分查找,因为它快速高效,特地写了一段如下:
- <?php
- /**
- * 二分法寻找数组下标
- *@blog http://www.phpddt.com
- */
- function binarySearch($array,$value){
- //起始位置,你可以作为函数参数
- $low = 0;
- $high = count($array)-1;
- while($low <= $high){
- $mid = ceil(($low+$high)/2);
- if($array[$mid] == $value)
- return $mid;
- if($array[$mid] < $value){
- $low = $mid + 1;
- }
- if($array[$mid] > $value){
- $high = $mid - 1;
- }
- }
- return -1;
- }
- //this is a test
- $a = array(1,3,5,7,8,12);
- echo binarySearch($a,8); //4
- ?>
其实PHP中有个很好用的函数叫array_search()
- <?php
- $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
- $key = array_search('green', $array);
- echo $key; //2
- ?>
很轻松就返回数组下标了!
转载请注明地址: http://www.phpddt.com/php/php-binarysearch.html 尊重他人劳动成果就是尊重自己!
- 上一篇 »PHP二维数组追加修改二维数组数据
- 下一篇 »Java二分法