目次> 第11章> 11.7 | TOPUPPREVNEXT |
名前と電話番号の配列を作成し、名前(よみ)で順次探索をし電話番号を表示してみましょう。
プログラム SeqSearch2.java
実行結果
データ件数が少ない場合は先頭から順に探せばいいのですが、データ件数が多い場合は、効率が問題となります。 データを小さい順に並べておけば、2分探索というアルゴリズムが使えます。
小さい順にならべかえる(整列する)ことについては、13章で説明します。いろいろな方法がありますが、 ここでは、オブジェクトの大小を比較できるように インタフェース Comparable を実装( CompareTo メソッドを定義 ) しておき、 java.util.Arrays クラスの sort メソッドで オブジェクトの配列全体を整列するという方法を紹介します。
Javaには、大小関係のあるデータを上手に蓄積したり、検索したりする仕組みがいろいろ用意されていて、 自分で検索プログラムを作成することはあまりありませんが、 ここでは、1回比較するたびに探す範囲を半分に絞り込んでゆくというアルゴリズムを理解してください。
プログラム SeqSearch.java との相違点:
プログラム BinarySearch.java
実行結果
もとのデータの先頭と最後が検索できるかという確認の他に、
整列後に先頭になったデータと最後になったデータが整列できるかの確認を追加しました。
データの端についてきちんと動作確認をする習慣をつけましょう。
91行目の先頭の // を削って、ind の値をDOS画面に表示しています。 これにより、「いとう」と「わたなべ」が、整列後の先頭と最後であることの確認ができます。 確認が終わったら、またコメントに戻しておきましょう。 プログラムの他の部分を修正した場合、この確認を再度したくなることがよくあります。 物理的に削除しないことがコツです。
更新日:2005/08/03 | TOPUPPREVNEXT |