1, sequential search
1 function line_search($array,$tar) 2 { 3 if(!is_array($array) || count($array) < 1) return false; 4 for($i=0;$i<count($array);$i++){ 5 if($array[$i] == $tar){ 6 return $i; 7 } 8 } 9 return false; 10 } 11 12 line_search($arr,34);
2, a binary search
1 // nonrecursive 2 function binary_search ( $ Array , $ the tar ) . 3 { . 4 IF (! Is_array ( $ Array ) || COUNT ( $ Array ) <1) return to false ; . 5 // array must be sorted . 6 Sort ( $ Array ); . 7 $ High = COUNT ( $ Array ) -. 1 ; . 8 $ Low = 0 ; . 9 the while ( $ Low <=$high){ 10 $middle = intval(($high + $low) / 2); 11 if($array[$middle] > $tar){ 12 $high = $middle - 1; 13 }elseif($array[$middle] < $tar){ 14 $low = $middle + 1; 15 }else{ 16 return $middle; 17 } 18 } 19 return false; 20 } 21 22 binary_search($arr,165.4);
1 // 递归 2 function binary_search($array,$tar,$high=0,$low=0) 3 { 4 if(!is_array($array) || count($array) < 1) return false; 5 sort($array); 6 if($low <= $high){ 7 $middle = intval(($high + $low) / 2); 8 if($array[$middle] > $tar){ 9 $high = $middle - 1; 10 echo $high."</br>"; 11 return binary_search($array,$tar,$high,$low); 12 }elseif($array[$middle] < $tar){ 13 $low = $middle + 1; 14 return binary_search($array,$tar,$high,$low); 15 }else{ 16 return $middle; 17 } 18 } 19 return false; 20 } 21 22 binary_search($arr,125,count($arr),0);