線形探索法(せんけいたんさくほう)

線形探索法(せんけいたんさくほう)

  • ある目的の数値を探し出すため、データの先頭から順番に調べて見つける方法。リニアサーチともいう。
  • 線形探索法の概念を次に示す。(下図参照)

線形探索法の概念

  • 一番簡単で確実な方法である。上の図のように扱うデータ数が少ない場合はこれで十分だが、扱うデータ数が数万とかになると処理に時間がかかる。
  • 線形探索法のプログラムを次に示す。ちなみに、このプログラムには致命的な欠陥が存在する。どこかわかるかな?

/* 線形探索法 */

#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:917 t:2 y:0