概要
前回はリニアサーチという検索アルゴリズム作成として、検索対象の配列を確認する為のループを作りました(前回の記事)。今回は探したい値を探すアルゴリズムを作ります。まずはおさらいとして以下フローチャートでイメージを掴みましょう。

再度リニアサーチの概要を解説します。別名全数探索とも言い、総当たりで検索します。アルゴリズムもシンプルでコードが書きやすい反面、動作が遅くなるリスクもあるアルゴリズムです。
動作は大きく3つに分けられます。
①配列のデータを見る
②中のデータが探したいデータか判定する
③データ発見時、未発見時の処置
と分けて考えます。基本的に①②をループし、データが見つかるか見つからなかった場合に③の手順を実行します。今回は1〜10の値を適当に配列に放り込み、10がどの配列にあるのか総当たりで探します。前回の①に追加する形で②を以下のコードを書きます。
コード
#include <stdio.h>
#define NUM 10 //配列要素数
int arr[NUM]={5,2,8,9,1,4,10,6,3,7};
int val=10; //探したい値
int main()
{
for(int i=0;i<NUM;i++)
{
if(arr[i]==val)
printf("%s\n","FIND");
}
return 0;
}
Option Explicit
Const NUM As Integer = 9
Sub searchRenear()
Dim arr() As Variant
Dim val As Integer
Dim i As Integer
arr = Array(5, 2, 8, 9, 1, 4, 10, 6, 3, 7)
val = 10 '探したい値
For i = 0 To NUM
If (arr(i) = val) Then
Debug.Print ("FIND")
End If
Next i
End Sub
ループ中に配列の値が見つけたい値と一致しているかを判定する為にif文を使いました。検索したい値が見つかったら「FIND」と出力される様にします。実行して動作を確認してみましょう。今回のコードでは探したい値がどの配列にあるかまでは分かりません。次回にリニアサーチ編の最終回として検索したい値発見時の処理と未発見時の処理を作ります。