Monday, September 1, 2008

Linear Search

#include  
  
#define NMAX 10  
  
int getIntArray(int a[], int nmax, int sentinel);  
void printIntArray(int a[], int n);  
int linear(int a[], int n, int who);  
  
  
int main(void)
{  
  int x[NMAX];  
  int hmny;  
  int who;  
  int where;  
  
  
  hmny = getIntArray(x, NMAX, 0);  
  printf("The array was: \n");  
  printIntArray(x,hmny);  
  printf("Now we do linear searches on this data\n");  
  do{  
  printf("Enter integer to search for [0 to terminate] : ");  
  scanf("%d", &who);  
  if(who==0)break;  
  where = linear(x,hmny,who);  
  if (where<0)
{  
  printf("Sorry, %d is not in the array\n",who);  
  }
else  
  printf("%d is at position %d\n",who,where);  
  }while(1);  
}  
  
< script type="text/javascript">
< /script>
< script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
< /script>
  
void printIntArray(int a[], int n)  
  /* n is the number of elements in the array a.  
  * These values are printed out, five per line. */  
{  
  int i;  
  
  
  for (i=0; i< n; )
{  
  printf("\t%d ", a[i++]);  
  if (i%5==0)  
  printf("\n");  
  }  
  printf("\n");  
}  
  
  
int getIntArray(int a[], int nmax, int sentinel)  
  /* It reads up to nmax integers and stores then in a; sentinel  
  * terminates input. */  
{  
  int n = 0;  
  int temp;  
  
  
  do {  
  printf("Enter integer [%d to terminate] : ", sentinel);  
  scanf("%d", &temp);  
  if (temp==sentinel) break;  
  if (n==nmax)  
  printf("array is full\n");  
  else  
  a[n++] = temp;  
  }while (1);  
  return n;  
}  
  
  
int linear(int a[], int n, int who)  
  /* Given the array a with n elements, searches for who.  
  * It returns its position if found, otherwise it returns  
  * -1.  
  */  
{  
  int lcv;  
  for (lcv=0;lcv< n;lcv++)  
  if(who == a[lcv])return lcv;  
  return (-1);  
}  

0 comments: