C program : Binary search
#include<stdio.h>
#include<conio.h>
binarysearch(int *[], int, int, int);
void main()
{
int i, j, k, t, low, high, n, a[50], ans;
clrscr();
printf(" \n Enter the number of elements: ");
scanf(" %d ", &n);
printf(" \n Enter the array element one by one \n ");
for(i = 0; i < n; i++)
scanf(" %d ", &a[i]);
printf(" \n Sorted array \n ");
for(Ii= 0; i < n; i++)
for(j = I + 1; j < n; j++)
if(a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
for(i =0; i < n; i++)
printf(" \t a[%d] = %d \n ", i, a[i]);
printf("\t Enter the element to search:");
scanf("%d",&k);
low = 0;
high = n - 1;
ans = binarysearch(a, k, low, high);
if(ans !=-1)
printf(" \n The number %d is present in the list at location %d. ", k, ans);
else printf(" The number is not present in the list. ");
getch();
}
int binarysearch(int *a[], int x, int low, int high)
{
int mid, p;
if(low > high)
return-1;
while(low<=high)
{
mid = (low + high) / 2;
p = a[mid];
if(x == p)
return(mid);
else if(x < p) high=mid-1;
else low=mid+1;
}
}
0 comments