線形探索法(せんけいたんさくほう)
線形探索法(せんけいたんさくほう)
- ある目的の数値を探し出すため、データの先頭から順番に調べて見つける方法。リニアサーチともいう。
- 線形探索法の概念を次に示す。(下図参照)
- 一番簡単で確実な方法である。上の図のように扱うデータ数が少ない場合はこれで十分だが、扱うデータ数が数万とかになると処理に時間がかかる。
- 線形探索法のプログラムを次に示す。ちなみに、このプログラムには致命的な欠陥が存在する。どこかわかるかな?
/* 線形探索法 */
#include <stdio.h>
void l_search(int n_data[10], int s_no);
main()
{
int n_data[10]={2,3,4,10,5,6,7,11,9,1};
int s_no=0;
printf("検索したい数値を入力してください\n");
scanf("%d",&s_no);
l_search(n_data,s_no);
}
/* 線形探索のアルゴリズム */
void l_search(int n_data[10], int s_no)
{
int i;
int pos=0;
for(i=0;i<10;i++)
{
/* 検索したいデータが存在しなかった場合は、pos=-1(なし)とする */
if(s_no!=n_data[i] && i=9)
{
pos=-1;
}
/* 見つかった場合は、その場所を記憶(配列は0から始まるため1を足す) */
if(s_no==n_data[i])
{
pos=i+1;
break; /* ループを抜ける */
}
}
if(pos==-1) printf("データ内には存在しませんでした\n");
else printf("そのデータは%d番目にありました\n",pos);
}
a:2625 t:1 y:0