原文地址:侯哥小博http://37blog.com/?p=147
function less($start,$end,$arr){ $length=count($arr); if($end-$start+1==$length){ return "不缺少值"; } if($start!=$arr[0]){ return $start; }else if($end != $arr[$length-1]){ return $end; }else{ $middle=ceil(($start+$end)/2);//数组平均数向上取整数 if(array_search($middle,$arr)===false){ return $middle; } $middle_arr=$arr[ceil($length/2)-1];//数组中间值 $z_m=array_search($middle,$arr);//中间值坐标 if($middle>$middle_arr){ //缺少值在后区 $arr_new=array_slice($arr,$z_m); return $this->less($middle,$end,$arr_new); }else{ //缺少值在前区 $arr_new=array_slice($arr,0,$z_m+1); return $this->less($start,$middle,$arr_new); } } }