//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:
#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