level 1
vida就这样了
楼主
//##查找search
//要求从一个数组中查找一个数,如果查找则输入该数的下标,如果找不到,则输出查无此事
/*----案例-----*/
$arr=array(46,90,900,0,-1,-1);
function search(&$arr,$findVal){
$flag=false;
foreach($arr as $key=>$val){
if($findVal==$arr[$key]){
echo "找到了,下标为:$key"; $flag=true; //break; } } if(!$flag){ echo '查询不到'; } } search($arr,-1);
/*------二分查找法(必须掌握)-------*/ //二分查找:必备前提:该数组本身已经是一个有序数组,如果该数组不是有序的,则必须先排序,才能使用查找 //查找步骤:首先找到数组中间这个数,然后与要查找的数比较,如果要查找的数大于中间这个数,则说明应当向后找,否则,向前找,如果相等,则说明找到。 /*------案例binarySearch-----*/ function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){ //当$rightIndex<$leftIndex说明没有数 if($rightIndex<$leftIndex){ echo "找不到该数"; return; } $middleIndex=round(($rightIndex+$leftIndex)/2);//找到中间这个数,round()函数:把浮数点四舍五入 if($findVal>$arr[$middleIndex]){//如果大于,向后面找 binarySearch($arr,$findVal,$middleIndex+1,$rightIndex); }else if($findVal<$arr[$middleIndex]){//如果是小于中间这个数,则向前面找 binarySearch($arr,$findVal,$leftIndex,$middleIndex-1); }else{ echo "找到这个数 下标是 $middleIndex"; } } $arr=array(0,90,91,99,999,999990); binarySearch($arr,-3,0,count($arr)-1);
?>
2012年10月02日 23点10分
1
//要求从一个数组中查找一个数,如果查找则输入该数的下标,如果找不到,则输出查无此事
/*----案例-----*/
$arr=array(46,90,900,0,-1,-1);
function search(&$arr,$findVal){
$flag=false;
foreach($arr as $key=>$val){
if($findVal==$arr[$key]){
echo "找到了,下标为:$key"; $flag=true; //break; } } if(!$flag){ echo '查询不到'; } } search($arr,-1);
/*------二分查找法(必须掌握)-------*/ //二分查找:必备前提:该数组本身已经是一个有序数组,如果该数组不是有序的,则必须先排序,才能使用查找 //查找步骤:首先找到数组中间这个数,然后与要查找的数比较,如果要查找的数大于中间这个数,则说明应当向后找,否则,向前找,如果相等,则说明找到。 /*------案例binarySearch-----*/ function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){ //当$rightIndex<$leftIndex说明没有数 if($rightIndex<$leftIndex){ echo "找不到该数"; return; } $middleIndex=round(($rightIndex+$leftIndex)/2);//找到中间这个数,round()函数:把浮数点四舍五入 if($findVal>$arr[$middleIndex]){//如果大于,向后面找 binarySearch($arr,$findVal,$middleIndex+1,$rightIndex); }else if($findVal<$arr[$middleIndex]){//如果是小于中间这个数,则向前面找 binarySearch($arr,$findVal,$leftIndex,$middleIndex-1); }else{ echo "找到这个数 下标是 $middleIndex"; } } $arr=array(0,90,91,99,999,999990); binarySearch($arr,-3,0,count($arr)-1);
?>