[JAVA]アルゴリズムチャレンジ part.1(リニアサーチ)

By | 2016/08/07

[このシリーズでは何回かに分けて、定番アルゴリズムを紹介していきます。ぜひ、プログラミングの練習に活用ください。]

プログラミング技術を向上させる方法として、定番アルゴリズムを学習することを自分はオススメしています。
定番のアルゴリズムには、いいプログラムを作成するための考え方(ヒント)がたくさん詰まっています。これらのアルゴリスムから学んだヒントを活かして、より良いプログラムの作成を目指すことで、プログラミング技術は向上していきます。

リニアサーチ(線形探索法)

リニアサーチは定番アルゴリズムの中で、探索アルゴリズムというカテゴリーに分類されます。探索アルゴリズムは名前から連想できるように、目的のデータを探し出すアルゴリズムのことです。同じカテゴリーではリニアサーチの他にバイナリサーチ(二分探索法)、ハッシュ探索法などがあります。

リニアサーチのイメージ

リニアサーチを簡単に説明すると「データを先頭から順番に調べて探すアルゴリズム」です。
何だか小難しく聞こえるかもしれませんが、下記の流れ図やソースコードを見れば、ありふれた考え方であることに気づくと思います。
他のアルゴリズムに比べると、簡単なアルゴリスムの一つです。

例)ある配列の中から目的のデータを取得する
イメージ図

この図を見て、どんなコードを書けば良いのか、頭に浮かんできましたか?
今度は、アルゴリスムの流れを確認してみましょう。
フロート図

最後にソースコードにしたら、どうなるのか確認してみましょう。
プログラミングの練習でこの記事を読まれている方は、ここで一旦読むのを止めて、ソースコードを書いてみるのをお勧めします。
イメージ図とアルゴリズムの流れをヒントにソースコードを書いてみてください。書き終わったら、答え合わせをしてください。

リニアサーチ : サンプルコード[JAVA]

public class LinearSearch {
	
	public static void main(String[] args){
		//探索対象のリスト
		int array[] = new int[]{2,4,3,5,1};
		//ターゲット
		int target = 5;
		//探索結果の判定
		boolean canFind = false;
		
		for(int i=0;i<array.length;i++){
			if(array[i]==target){
				System.out.println(target+"は"+(i+1)+"番目である。");
				canFind = true;
				break;
			}
		}
		if(canFind==false){
			System.out.println("見つかりませんでした。");
		}
	}
}

いかかがでしょうか。このようなソースコードになるかと思われます。皆さんが書いたコードはどうでしょうか?
もっといい書き方があれば、ぜひご指摘ください。いや、心からお持ちしております!

この記事が皆様のお役に立てれば、幸いです。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です