php顺序查找_二分查找

作者: 鲁智深 分类: PHP 发布时间: 2015-01-27 13:06

顺序查找

对某个数组,按顺序一个一个比较,然后找到你要的数据

案例

要求从一个数组$arr=array(45,90,900,0,-1)中查找一个数34,如果找到则输出该数的下标,如果找不到,则输出,查无次数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$arr=array(45,90,900,0,-1);
    function search(&$arr,$findVal){
      $flag=false;
      for($i=0;$i<count($arr);$i++){
         if($findVal==$arr[$i]){
           echo"找到了,下标为=$i";
            $flag=true;
             //break去掉则会查找多个值,如不去掉则一旦查找到值就推出
            break;
     }
   }
  if(!$flag){
    echo'查不到';
}
}

search($arr,90);

二分查找

所谓二分查找,它有一个重要的前提,该数组本身已经是一个有序数组,如果该数组不是有序的,则必须先排序在查找。

二分查找

二分查找

代码开始

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function binarySearch(&$arr,$findVal,$rightindex,$leftIndex){
     //当$rightindex>$leftIndex说明没有数
    if($rightindex<$leftIndex){
       echo "找不到该数";
       return;
}
     //找的中间这个数
     $middleIdsex=round($rightindex+$leftIndex)/2;
//如果大于则,向后面找
      if($findVal>$arr[$middleIdsex]){
         binarySearch($arr,$findVal,$middleIdsex+1,$rightIndex);
//如果是小于中间的这个数,则向前面找
}else if($findVal><$arr[$middleIdsex]){
         binarySearch($arr,$findVal,$middleIdsex-1,$leftIndex);
}else{
    echo "找的这个数,下标是$middleIdsex";
}
}

//创建数组
$arr=array(0,90,900,9000,10000);
//输出下标
binarySearch($arr,90,0,count($arr)-1);

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注