探索のアルゴリズム:線形探索(番兵法)Advertisement線形探索(番兵法)
基本的には逐次探索と同じ。違うのは、配列の最後に探索データをセットしておくことで、データが必ず見つかる状態にしておくトコ。逐次探索にくらべると条件判断がひとつ減るため、探索効率が向上する。
方法
実現
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!ログール |