linearSearch 線形探索
int linearSearch(DATA *data, int nmem, int target);
typedef struct {
int key; /* 比較のキーとなるフィールド */
int info; /* その他のフィールド */
} DATA;
data (入力)データレコードの配列
nmem (入力)レコード配列の大きさ
target (入力)探索目標とするキーの値
見つかった場合は配列の要素番号(配列の先頭要素の番号は0)。 見つからなかった場合は -1。
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) である。