- ベストアンサー
二分探索について
今、学校の宿題で二分探索の課題が出てるのですがよくわかりません。どなたか教えていただけないでしょうか?内容は11,24,36,44,58,64,77の7つの数字の中で、58を二分探索を使って探し出すのですが、何回の比較で58を探し出したかをmsgboxを使って表示させるプログラミングを考えるというものです。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答 No. 1 の方に同じく,「ここで教えてもらった」イコール「できましたではありません」。 でも,それほど難しくはないでしょうから,以下の点を確認して,プログラムを組んでみてください。この課題は,Visual Basic より,C や Java のほうが簡単のような気がしますが。 1. 二分探索は,それを行うに際して,データ列の並びに何らかの条件があったはずです。それは何ですか。 2. 二分探索は,その名のとおり,探索範囲を半分半分に狭めていくものです。そのために重要となる「判定処理」は何ですか。 3. その「半分半分」にするにあたっては,判定処理をするデータ(着目するデータ)はどう選択すればよいですか。 4. そして最後に,コーディングにあたっては,「特定の条件を満たすまで繰り返し」という構造を使用するはずです。それは,Visual Basic ではどうコーディングされますか。 以上をご参考の上,課題に取り組んでください。ご健闘をお祈りします。
その他の回答 (3)
- tatsu99
- ベストアンサー率52% (391/751)
参考URLにVBによる二分探索の例があります。 VBと二分探索をキーワードにして検索を行うと二分探索に関する資料が得られます。
- imogasi
- ベストアンサー率27% (4737/17069)
2分検索は、値が昇順か(降順に)ソートされていることが必要です。本件は昇順にソートされているものとします。また配列A(i)に記録されているものとします。 (1)配列要素の最初の1と最後7を加えて、2で割ると(1+7)÷2=4となる(ここで整数にする)。 言語によっては配列(小数)は配列(切り捨て正整数)になるものあり。 4番目の値A(4)の44と,探索する値58を比較して 58が(等しくなく)大きい。 (2)その場合、後半のA(5)~A(7)を探す。 後半先頭4の方は1すすめて5にする。 (3)(5+7)÷2=6を6として、A(6)の64と 58と比較して(等しくなく)検索値58が小である。 (4)それでA(5)で探す。後尾6の方は1引いて5のする。 (5)A(5)の58と検索値58と一致して見つかった。 OKWEBへ宿題丸投げは禁止のようなので、ロジックだけに止めます。
- coco1
- ベストアンサー率25% (323/1260)
そうやって、教えてもらったものを「できました」といって提出するつもりですか?
補足
すいません。課題というのは授業で使うので最低限このことを理解して来いという物で、宿題でもなんでもないんです。ただその最低限がわからなくて、みなさんに質問させていただきました。すいません・・・。