php新浪面试题:二分法查字符串(或数组)位置 收藏
2010年06月23日


fxs_2008注:以下测试通过。

//要查找的数组
$array = array(1,2,3,4,5,6,7,8,9,13,14,15,16,19,25,34,50,101);
$searchValue = 13;


$n = tuo($array,$searchValue);
echo $n===false? 'no' : "$n : {$array[$n]}";

function tuo($array, $searchValue) {
  list($start, $end) = array(0, count($array));
  while($end-$start > 0) {
      $mid = floor(($end+$start)/2);

      if($array[$mid] == $searchValue) {
          return $mid;
      }

      if($array[$mid] >$searchValue){
          list($start, $end) = array($start, $mid);
      }else{
          list($start, $end) = array($mid, $end);
      }
      echo $mid.'|'.$start.':'.$end.'<br />';
  }
  if($array[$mid] == $searchValue) return $mid;
  return false;
}

 

本文永久链接: http://www.zzxj.net/blog/fxs_2008/archive/2010/06/23/167.html

发表于 @ 2010年06月23日 |评论(loading... )|收藏

发表评论 姓  名: