第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

我的二分查找函數(shù)為什么返回不了值??

<?php


function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){

//取中間的數(shù)的下標

$middleIndex=round(($leftIndex+$rightIndex)/2); ?


if($leftIndex>$rightIndex){

return "查找不到";

}


if($findVal>$arr[$middleIndex]){ ?//當查找的值比中間的數(shù)大

binarySearch($arr,$findVal,$middleIndex+1,$rightIndex); ?//從中間數(shù)的后段查找

}elseif($findVal<$arr[$middleIndex]){ ?//當查找的值比中間的數(shù)小

binarySearch($arr,$findVal,$leftIndex,$middleIndex-1); ?//從中間數(shù)的前段查找

}else{

return $middleIndex;

}

}

$a=array(1,2,3,4,5,6,7,8,9);

$b=binarySearch($a,1,0,count($a)-1);

var_dump($b);

?>


正在回答

5 回答

有沒有大神幫忙看看?。??

0 回復 有任何疑惑可以回復我~

另外二分查找的前提是按順序排列的數(shù)組

0 回復 有任何疑惑可以回復我~

兄弟,你想復雜了

二分查找,是查找,不是排序,比如你想在一個不重復的數(shù)組里面查找 有沒有1,然后返回它的下標,下面是代碼

? ? function binarySearch(Array $arr, $target) {

? ? ? ? $low = 0;

? ? ? ? $high = count($arr) - 1;

? ? ? ? while($low <= $high) {

? ? ? ? ? ? $mid = floor(($low + $high) / 2);

? ? ? ? ? ? #找到元素

? ? ? ? ? ? if($arr[$mid] == $target) return $mid;

? ? ? ? ? ? #中元素比目標大,查找左部

? ? ? ? ? ? if($arr[$mid] > $target) $high = $mid - 1;

? ? ? ? ? ? #重元素比目標小,查找右部

? ? ? ? ? ? if($arr[$mid] < $target) $low = $mid + 1;

? ? ? ? }

? ? ? ? #查找失敗

? ? ? ? return false;

? ? }

? ? $arr = array(1, 3, 5, 7, 9, 11);

? ? $inx = binarySearch($arr, 1);

? ? var_dump($inx);


0 回復 有任何疑惑可以回復我~

失誤了,你有用遞歸方法

0 回復 有任何疑惑可以回復我~

這里是不是沒加循環(huán)一直查下去,或者用遞歸方法一直查下去

0 回復 有任何疑惑可以回復我~
#1

qq_感謝永遠有歌把心境道破_03171663 提問者

應該不是的,我前面有if判斷,而且用echo輸出是正常的,就是不知怎么return返回不了
2016-09-03 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

我的二分查找函數(shù)為什么返回不了值??

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號