[このシリーズでは何回かに分けて、定番アルゴリズムを紹介していきます。ぜひ、プログラミングの練習に活用ください。]
プログラミング技術を向上させる方法として、定番アルゴリズムを学習することを自分はオススメしています。
定番のアルゴリズムには、いいプログラムを作成するための考え方(ヒント)がたくさん詰まっています。これらのアルゴリスムから学んだヒントを活かして、より良いプログラムの作成を目指すことで、プログラミング技術は向上していきます。
リニアサーチ(線形探索法)
リニアサーチは定番アルゴリズムの中で、探索アルゴリズムというカテゴリーに分類されます。探索アルゴリズムは名前から連想できるように、目的のデータを探し出すアルゴリズムのことです。同じカテゴリーではリニアサーチの他にバイナリサーチ(二分探索法)、ハッシュ探索法などがあります。
リニアサーチのイメージ
リニアサーチを簡単に説明すると「データを先頭から順番に調べて探すアルゴリズム」です。
何だか小難しく聞こえるかもしれませんが、下記の流れ図やソースコードを見れば、ありふれた考え方であることに気づくと思います。
他のアルゴリズムに比べると、簡単なアルゴリスムの一つです。
例)ある配列の中から目的のデータを取得する
この図を見て、どんなコードを書けば良いのか、頭に浮かんできましたか?
今度は、アルゴリスムの流れを確認してみましょう。
最後にソースコードにしたら、どうなるのか確認してみましょう。
プログラミングの練習でこの記事を読まれている方は、ここで一旦読むのを止めて、ソースコードを書いてみるのをお勧めします。
イメージ図とアルゴリズムの流れをヒントにソースコードを書いてみてください。書き終わったら、答え合わせをしてください。
リニアサーチ : サンプルコード[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("見つかりませんでした。"); } } }
いかかがでしょうか。このようなソースコードになるかと思われます。皆さんが書いたコードはどうでしょうか?
もっといい書き方があれば、ぜひご指摘ください。いや、心からお持ちしております!
この記事が皆様のお役に立てれば、幸いです。