@634

探索のアルゴリズム:線形探索(番兵法)

Advertisement

線形探索(番兵法)

基本的には逐次探索と同じ。違うのは、配列の最後に探索データをセットしておくことで、データが必ず見つかる状態にしておくトコ。逐次探索にくらべると条件判断がひとつ減るため、探索効率が向上する。

方法

  1. 配列の最後に探索データを設定。
  2. 配列の先頭から順番に、探索データと比較する。
  3. 値が同じなら探索終了。違うなら次の要素と比較する。
  4. 見つかった要素が配列の一番後ろだった場合、探索データはみつからなかったことになる。

実現

class Search{
    /*
    * 逐次探索(番兵法)
    * 引数1:数値配列    引数2:探索データ
    * 戻り値:見つかった場合データの要素番号
    *         見つからなかった場合 -1
    */
    public static int soldierSearch(int[] d, int x){
        //番兵用配列 data 作成
        int[] data = new int[d.length + 1];
        for(int j = 0; j < d.length; j++){
            data[j] = d[j];
        }
        data[data.length - 1] = x;

        //探索
        int i = 0;
        while(data[i] != x){
            i++;
        }

        //結果を返す
        if(i < data.length){
            return i;
        }else{
            return -1;
        }
    }
}

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール