Sunday, June 8, 2008

Binary Search Using Recursion


/* Subhranath Chunder - Binary Search using Recursion */

#include<stdio.h>
#include<conio.h>

void sort(int a[],int n);
int search(int t,int a[],int lb,int ub);
void main()
{
int n,inp[200],i,key,result;
clrscr();
printf("Enter the no. of terms: ");
scanf("%d",&n);
printf("Enter the values: ");
for(i=0;i<n;++i)
scanf("%d",&inp[i]);
printf("Enter the value to search: ");
scanf("%d",&key);
sort(inp,n);
printf("The sorted array is given below:\n");
for(i=0;i<n;++i)
printf("%d ",inp[i]);
result=search(key,inp,0,n-1);
if(result==-1)
printf("\nValue Not Found");
else
printf("\nThe value was found at position %d of the sorted array.",result);
getch();
}

void sort(int a[],int n)
{
int i,j,temp;
for(i=0;i<n-1;++i)
{
for(j=0;j<n-1-i;++j)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}

int search(int key,int a[],int lb,int ub)
{
int middle;
if(lb<=ub)
{
middle=(lb+ub)/2;
if(a[middle]==key)
return(middle);
if(key<a[middle])
return search(key,a,lb,middle-1);
else
return search(key,a,middle+1,ub);
}
return(-1);
}

No comments: