- <?php
- //查找, 在一个数组中找到你想要的数据
- //从数组 34,234,7,454,23 查找 7
- //顺序查找
- $a=array(-1,0,7,23,45,6767,7878);
- function search($arr,$findVal){
- for($v=0;$v<count($arr);$v++){
- if($findVal==$arr[$v]){
- echo "找到了,索引为:".$v;
- }
- }
- }
- //search($a,7);
- //二分查找:(数组是有序的)
- //首先找到数组中间这个数,然后跟要查找的数进行比较,如果比要查找的数字大,则在上边查找,
- //如果小的话就在下面查找,知道查找到该数即可停止
- function binarySearch($arr,$findVal,$minIndex,$maxIndex){
- if($maxIndex<=$minIndex){
- if($findVal==$arr[$maxIndex]){
- echo "找到该数字,索引为:".$maxIndex;
- }else{
- echo "找不到该数字";
- }
- return ;
- }
- $middle=round(($minIndex+$maxIndex)/2);
- if($findVal<$arr[$middle]){
- binarySearch($arr,$findVal,$minIndex,$middle-1);
- }else if($findVal>$arr[$middle]){
- binarySearch($arr,$findVal,$middle+1,$maxIndex);
- }else{
- echo "找到了索引为".$middle;
- return ;
- }
- }
- binarySearch($a,0,0,6);
- ?>