dポイントプレゼントキャンペーン実施中!

ある書籍の検索アルゴリズムの2分検索の説明で、下記のような例が示されていました。
(これはその例を私がプログラム化したのもので、書籍からの転写ではありません。)

そこで疑問なんですが、このプログラムは確かに動作こそしますが、
ループの中の$middleは小数になりますよね。
添え字が小数になる事は、正しい配列の処理といえるのでしょうか?
小数に対して、丸めるなどの処理を加えるべきなのでしょうか?

よろしくお願いします。

------------------------------------------------------------
「$arrayの中から、$xを検索します」
$array = array(1,2,3,4,5,7,10,12);
$x = 10;
$low = 1;
$high = count($array);
$is_exist = false;

while( $low <= $high and $is_exist == false ) {
$middle = ( $low+$high )/2;
if( $array[$middle] == $x ) {
$is_exist = true;
} else if ( $array[$middle] < $x ) {
$low = $middle+1;
} else if ( $array[$middle] > $x ) {
$high = $middle-1;
}
}

if ($is_exist) {
echo "true";
} else {
echo "false";
}

A 回答 (2件)

ご心配なく。


自動的に、小数点以下を切り捨てます。
配列の添字は、間違いなくゼロ以上の整数です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2009/04/06 22:49

気持ち悪いなら明示的な型宣言をしてみては?



$middle = (int)(( $low+$high )/2);
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2009/04/06 22:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!