Binary search is a searching algorithm that works efficiently with a sorted list. The mechanism of binary search can be better understood by an analogy of a telephone directory. When we are searching for a particular name in a directory , we first open the directory from the middle and then decide whether to look for the name in the part of the directory or in the second part of the directory.

## Working Of Binary Search-:

Now let us consider how this mechanism is applied to search for a value in a sorted array. Consider an array A[ ] that is declared and initialized as

int A[ ]={ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }

and the value to be searched is val=9 , the binary search will proceed in following manner

Beg=0 END=10 MID=( 0+10 )/2=5

Now , val=9 and A[ MID ]=5

A[ 5 ]is than val therefore we now search for the value in the second half of the array , so we change the values of BEG and MID

Now BEG=MID+1 =6 END=10 MID=( 6+10 )/2=8

val=9 and A[ 8 ]=8

A[ 8 ] is less than val therefore we now search for the value in the second half of the segment so again we change the values of BEG and MID

Now BEG=MID+1=9 END=10 Mid=( 9+10 )/2=9( here we take only integer part)

Now val=9 A[MID]=9

in this searching method first we find the middle of the array and then check the value if matched then print that location otherwise check if A[MID]<val then go to second half apply the above method and if A[MID]>val then check in first half.

Note-: ( if A[MID]<val BEG=MID+1) and ( if A[MID]>val END=MID-1)

## Program Of Binary Search-:

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

int main()
{
int i, first, last, middle, num, val, array;

printf("Enter number of elements in array\n");
scanf("%d", &num);

printf("Enter %d elements in the array \n", num);

for (i = 0; i < num; i++)
{

scanf("%d", &array[i]);
}
printf("Enter value to find\n");
scanf("%d", &val);

first = 0;
last = num - 1;
middle = (first+last)/2;

while (first <= last)
{
if (array[middle] < val)
first = middle + 1;
else if (array[middle] == val)
{
printf("%d found at location %d.\n", val, middle);
break;
}
else
{

last = middle - 1;
}
middle = (first + last)/2;
}
if (first > last)
{