查找

查找:
  顺序,对一个数组按顺序查,一个一个比较,然后找到
         你要的数据
     //查找
  $arr=array(23,24,52,66,2);

  function search(&$arr,$findval){

      $flag=false;   //定义一个布尔值$flag作为

标志符;
 
     for($i=0;$i<count($arr);$i++){  //遍历  用

foreach也行;
    
        if($findval==$arr[$i]){
        
           echo "找到了,下标是:".$i;
           $flag=true;
           break;   //找到一个就退出了
        
        }
    
     }
     if(!$flag){
    
        echo "查无此数";
    
     }
 
  }


二分查找;


  前提是该数组已经是有序的数组;无序的就必须先排序


  方式:找到数组中间的数,然后与要查的数比较;(数组是从小到大排列的)
        大于中间的数->向右查,小于->向左查;



   //二分查找函数

function binarysearch(&$arr,$findval,$left,$right){ //二分查找 用到递归的思想

  if($left>$right){

     echo "没找到数";
     return;
 
  }
 
  $middle=round(($right+$left)/2);//找到中间的数;四舍五入

  if($findval>$arr[$middle]){   //你要查找的数与中间数比较
 
     binarysearch($arr,$findval,$middle+1,$right);

 
  }
  else if($findval<$arr[$middle]){

          binarysearch($arr,$findval,$left,$middle-1);

  }else{
 
     echo "找到这个数 下标是".$middle;
 
  }
 
  }

 // search($arr,230);
 $arr=array(23,42,54,66,333);  //必须是有序的数组
 binarysearch($arr,54,0,count($arr)-1);



、、、多维数组

   数组中的元素也是数组;

    $arr=array(array(1,2,3),array(4,5,6,3));

posted on 2012-12-08 21:51  磊W磊  阅读(106)  评论(0)    收藏  举报

导航