☆ 演習7−1 ☆(順次探索)

特定の数値を入力すると、その数値があらかじめ用意されたデータ郡のどこにあるのかを調べるアルゴリズムを作成しなさい。
ただし、その探索のアルゴリズムには「順次探索(線形探索)」を用いること。

探索アルゴリズムと呼ばれるものにはいくつかありますが、ここでは『順次探索』を解説していきます。
この図が順次探索のイメージになります。

順次探索はは、「線形探索」とも言います。
順次探索は、配列の先頭から順番に、探索したいデータと比較していく処理を繰返すものです。
そして作成するシートはこちら。

少しずつ分割して説明していきましょう。

まず、配列に任意の数字を入れておきます。
数値はなんでもよいのですが、今回はわかりやすく10から10ずつ増やした数字を入れておきます。

そして、実行画面にて探したいデータを入力させます。
その数値を変数kに格納し、順次探索スタートです。
配列に入れていない数値を探してみると、もちろん配列に入れていないので見つかりませんね。

ここの、前判定繰返しとその右に配置されているシンボルの部分が、今回の順次探索の部分です。
変数iは配列内の数値を調べるために使います。

前判定繰返し内の式ですが、これは『iが6以下で、A[i]がkと一致しない間は繰返す』という意味になります。
繰返し条件を『』で繋ぐことによって、複数の条件を入れることが出来ます。

では、iを数値に変えてみるとどういう仕組みになっているんでしょう。

例えば、『40』を探したいとします。
iは1から始まっています。
ですので、最初の判定式は『1<=6 & A[1]<>k』となりますよね。
一つ目の条件は満たしています。
二つ目の条件はA[1]は10ですので、『10<>40』となり、満たしていますね。

条件が合えば、右のシンボルに進みiに1が足されます。
そうすると、判定値が『2<=6 & A[2]<>k』と変わります。

このように、条件が合う状態であれば上記の作業を続けていくのです。
そして、どちらかの条件が『』になったら、次の処理へ進みます。
(二つの条件が揃う間は繰返しますが、どちらかが満たされない場合には次の処理へ進みます)
最後に、抜け出してきた時のiの数値がなんだったかを判定して、出力をします。


では、実行結果はどのようになったのでしょうか。
40を検索した場合、40は配列の4番目に入っているのですが、しっかりと見つけ出しています。