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) である。