C program to implement Menu driven recursive Linear and Binary Search

//C program to implement Menu driven recursive Linear and Binary Search
#include<stdio.h>
#include<conio.h>
#include<time.h>
int binary_search(int,int[],int,int);
int linear_search(int,int[],int);
void main()
{
 int n,a[10],s,pos,i,ch;
 clock_t begin,end;
 double t;
 do
 {
  clrscr();
  printf("1)Binary search\n\n2)Linear search\n\n3)Exit\n\nEnter your choice : ");
  scanf("%d",&ch);
  switch(ch)
  {
   case 1:
 printf("\nEnter number of elements : ");
 scanf("%d",&n);
 printf("\nEnter %d elements in ascending order : ",n);
 for(i=0;i<n;i++)
  scanf("%d",&a[i]);
 printf("\nEnter search element : ");
 scanf("%d",&s);
 begin=clock();
 pos=binary_search(s,a,0,n-1);
 end=clock();
 break;
   case 2:
 printf("\nEnter number of elements : ");
 scanf("%d",&n);
 printf("\nEnter %d elements : ",n);
 for(i=0;i<n;i++)
 scanf("%d",&a[i]);
 printf("\nEnter search element : ");
 scanf("%d",&s);
 begin=clock();
 pos=linear_search(n-1,a,s);
 end=clock();
 break;
   case 3: exit(1);
 }
 if(pos==-1)
  printf("\nElement not found");
 else
  printf("\nElement found at %d position ",pos);
 printf("\n\nTime taken : %lf",(end-begin)/CLK_TCK);
 getch();
 printf("\n\nDo you wish to continue 1/0 ? : ");
 scanf("%d",&ch);
 }while(ch);
}
int binary_search(int s,int a[],int low,int high)
{
 int mid;
 delay(1000);
 if(low>high)
  return -1;
 mid=(low+high)/2;
 if(a[mid]==s)
  return mid+1;
 else if(a[mid]>s)
  return binary_search(s,a,low,mid-1);
 else
  return binary_search(s,a,mid+1,high);
}
int linear_search(int n,int a[],int s)
{
 delay(500);
 if(n<0)
  return -1;
 if(s==a[n])
  return n+1;
 else
  return linear_search(n-1,a,s);
}

Output:



No comments:

Post a Comment