リニアサーチ 1


概要

前回は構造体にデータを入力する方法を解説し、簡易的なデータ入力アプリを作りました(前回の記事)。今回からアルゴリズムの作り方について解説していきます。アルゴリズムは一気にプログラミングすると些細なミスで思ったように動かないことがあります。複雑なアルゴリズムでこれをやってしまうと地獄の様なバグ探しが待っています。そうならない為にも簡単なアルゴリズムでも順序立ててプログラミングする習慣を身につけましょう。
 まずはリニアサーチ(線形探索法)について解説します。以下資料が概要です。

リニアサーチは全数探索とも言い、総当たりで検索します。アルゴリズムもシンプルでコードが書きやすい反面、動作が遅くなるリスクもあるアルゴリズムです。
 動作を大きく3つに分けます。
①配列のデータを見る
②中のデータが探したいデータか判定する
③データ発見時、未発見時の処置
と分けて考えます。基本的に①②をループし、データが見つかるか見つからなかった場合に③の手順を実行します。今回は1〜10の値を適当に配列に放り込み、5がどの配列にあるのか総当たりで探します。まずは①の配列のデータを順番に見ていくアルゴリズムを考えます。以下がそのコードです。

コード

#include <stdio.h>

#define NUM 10  //配列要素数
int arr[NUM]={5,2,8,9,1,4,10,6,3,7};

int main()
{
    for(int i=0;i<NUM;i++)
        printf("arr[%d]=%d\n",i,arr[i]);
    return 0;
}
Option Explicit

Const NUM As Integer = 9

Sub searchRenear()
    Dim arr() As Variant
    arr = Array(5, 2, 8, 9, 1, 4, 10, 6, 3, 7)

    Dim i As Integer
    For i = 0 To NUM
        Debug.Print ("arr(" + CStr(i) + ")=" + CStr(arr(i)))
    Next i
End Sub

 配列の中をループで見ていくアルゴリズムのコードですが、基本的なループを使っています。ここを間違えるとリニアサーチは上手く動かないので基本的な事とはいえ確実に動作していることを確認しましょう。次回は検索ワードの判定をします。


コメントを残す