• ベストアンサー

配列の添え字が小数だとどうなる?

ある書籍の検索アルゴリズムの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"; }

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

ご心配なく。 自動的に、小数点以下を切り捨てます。 配列の添字は、間違いなくゼロ以上の整数です。

PearlJam69
質問者

お礼

ありがとうございます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

気持ち悪いなら明示的な型宣言をしてみては? $middle = (int)(( $low+$high )/2);

PearlJam69
質問者

お礼

ありがとうございます。

関連するQ&A