線形探索法(リニアサーチ)

http://www.geocities.jp/ky_webid/algorithm/006.html

ソートの話は一旦置いておいて今度は探索アルゴリズム

これは、データ列の先頭から末尾に向かって1つずつ探索していくアルゴリズムです。運良く、先頭近くで見つかれば非常に高速だし、運悪く、末尾近くまで見つからなければ非常に低速になってしまいます。また、そもそもデータ列中に存在していなければ、要素数の分だけ探索を続けなければならなくなります。

なるほど。って、ん?んん?大層な名前が付いてますが、これって単純にループして比較するだけ??

ともかくやってみます。

#include <stdio.h>

#define ARRAY_NUM(a) (sizeof(a)/sizeof(a[0]))

int linear_search (int *data,int array_size,int target) {
    int i;

    for(i=0;i<array_size;i++) {
        if ( data[i] == target ) {
            return 1;
        }
    }
    
    return 0;
}

int main (void) {
    int num[] = { 3,9,11,50,6,34,20,98,6,1 };
    
    printf("%d\n",linear_search(num,ARRAY_NUM(num),6));
    printf("%d\n",linear_search(num,ARRAY_NUM(num),10));
    
    return 0;
}
$ main
1
0

こうゆうこと?

解答例との比較

そのまんまでしたね。

普通にループしてチェックするだけのアルゴリズムですね。