Sunday, June 8, 2008

Binary Search


/* Subhranath Chunder - Binary Search */

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

void sort(int a[],int n);
int search(int t,int a[],int n);
void main()
{
int n,inp[200],i,key,result;
clrscr();
printf("Enter the no. of terms: ");
scanf("%d",&amp;n);
printf("Enter the values: ");
for(i=0;i<n;++i)
scanf("%d",&amp;inp[i]);
printf("Enter the value to search: ");
scanf("%d",&amp;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,n);
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 n)
{
int lb,ub,middle;
lb=0;
ub=n-1;
while(lb<=ub)
{
middle=(lb+ub)/2;
if(a[middle]==key)
return(middle);
if(key<a[middle])
ub=middle-1;
else
lb=middle+1;
}
return(-1);
}

No comments: