
ある書籍の検索アルゴリズムの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";
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
System.String.Splitでエラー
-
STLのvectorで作った配列をメン...
-
forとかで連番の変数を一気に格...
-
MYSQLとPHPによって取得する多...
-
配列を指定した順序でソート
-
プルダウンメニューにDBの内容...
-
String だと「 ByRef引数の型が...
-
配列を回すとき、最後の要素だ...
-
チェックボックスが複数選択で...
-
マッチング処理(1:N)
-
$_SESSIONに二次元配列を使える...
-
multiple属性のPOSTを配列で受...
-
複数行のデータのPOST処理に関して
-
エラーメッセージ(無効な間接...
-
タブ区切りのデータでnullのデ...
-
漢字のソートについて
-
配列同士の足し算のループ処理
-
ログファイルが一定行数を超え...
-
phpの関数について質問です!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
cakephpでのトランザクション処...
-
行列
-
読み(あ行~わ行)ごとに分け...
-
特定の文からメールアドレスの...
-
c言語 単位行列
-
STLのvectorで作った配列をメン...
-
多次元配列をエンコードする関...
-
2次元配列を1次元配列にするには
-
phpで、配列の値が意図せず変わ...
-
Delphiで別unitで宣言した「TAr...
-
連想配列に追加ってできるン?
-
正規表現
-
配列の並びについて
-
PHPでCSVを出力するさいに、ル...
-
pascalについて知りたいのです...
-
文字列の取得について
-
ファイルの書き込みについて教...
-
数独かを判断するプログラム
-
文字列の並び替え
おすすめ情報