033-アルゴリズム-線形探索【新人エンジニアが最初に覚えたい100のJava文法】シミュレータあり

ユーチューブ動画

アルゴリズム-線形探索について解説します。

ソースコード

public class ArgoSearchLinear {
	public static void main(String[] args) {
		int[] data = { 30, 60, 70, 90, 20 };
		System.out.println(search(data, 70));
	}
	public static int search(int[] data, int target) {
		int ret = -1;
		for(int i = 0; i < data.length; i++){
			if(target == data[i]){
				ret = i + 1;
			}
		}
		return ret;
	}
}

解説

線形探索について解説します。

プログラムを組み立てるときには、プログラムの解法が必要です。

プログラムの解法をアルゴリズムといいます。

代表的なアルゴリズムを覚えておくと、将来いろいろなプログラムを組むときのヒントになります。

ここでは、線形探索を紹介します。

探索とは、データを探すことです。

線形探索は、データを順番に比較し、目的のデータを探索するアルゴリズムになります。

データがバラバラの状態でも探索できるという利点があります。

サンプルコードみていきましょう。

Mainメソッドの中で配列が宣言されています。

データはバラバラの状態です。

並び替えの処理は、searchメソッドで定義されています。

配列と探索対象を引数で渡すと、探索結果が返ってくるようにしています。

Searchメソッドでは、変数retに-1を入れておき、戻り値にしています。

探索して、見つからなかった場合には-1を返すようにしています。

For文のブロックが、探索処理の部分です。

If target==data[i]の部分で、配列の要素の一つひとつと比較します。

変数targetには、探索対象が入ります。ここでは、70が入っています。

もし、targetと配列の要素が一致したら、そのときの配列のインデックスに1を足したものを変数retに入れます。

これは配列のインデックスが0から始まるのに対して、私たちは1から数えるからです。

今回はtargetとdata[0]を比較して、一致しない、

次にtargetとdata[1]を比較して、一致しない、targetとdata[2]を比較して、一致しますから、

変数iが2のときに一致します。そうするとretが3になり、結果は3と表示されます。

線形探索はもっとも一般的な探索方法です。

探索対象が前のほうにあれば、速く終わりますが、探索対象が終わりのほうにあったり、見つからない場合は時間がかかってしまうというデメリットがあります。

探索方法にもさまざまなものがありますから、いろいろと探してみてください。

以上、線形探索について解説しました。

このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。

線形探索と二分探索の比較シミュレーターへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。