線形探索


関数名
linearSearch  線形探索
形式
int linearSearch(DATA *data, int nmem, int target);

引数
typedef struct {
    int key;        /* 比較のキーとなるフィールド */
    int info;       /* その他のフィールド */
} DATA;

data    (入力)データレコードの配列
nmem    (入力)レコード配列の大きさ
target  (入力)探索目標とするキーの値
関数値
見つかった場合は配列の要素番号(配列の先頭要素の番号は0)。
見つからなかった場合は -1。
注意事項

用例(linearSearch-test.c

プログラム(linearSearch.c
int linearSearch(DATA *data, int nmem, int target)
{
    int i = nmem;

    if (i > 0)
        while (i--) if ((*data++).key == target) return nmem - (i + 1);
    return -1;
}
説明
探索とは多くのデータから望みのデータを見つけることである。 これは多くの情報処理で用いられる基本操作の一つである。

本線形探索は逐次探索、順探索ともいう。配列またはリストに並べられた データを一つ一つ順に端から調べるだけの素朴な探索法である。

比較のループを回る回数は、探索が失敗の場合はn回、成功の場合は平均 してn/2回。いずれにしても計算量は O(n) である。

関連関数
自己組織化探索2分探索2分探索木AVL木B木