Binary Search is one of the most efficient searching algorithm due to its better time complexity with O(log N). The working process of binary search is simple.

1. All the elements must be in sorted order.

2. Find the MID element, compare the MID element with given **Key**.

3. If **Key** matched with MID, return.

4. If **Key** is less than the MID, go ahead with Left sub array and start from step 2.

5. If **Key** is Greater than the MID, go ahead with right sub array and start from step 2.

6. Repeat this process until you found a **key** or return with no **key** found.

```
//Program Name: BinarySearch.c #include<stdio.h>
int main()
{
int c, first, last, middle, n, search, array[100];
printf("Enter number of elements\n");
scanf("%d",&n);
printf("Enter %d integers\n", n);
for ( c = 0 ; c < n ; c++ )
scanf("%d",&array[c]);
printf("Enter value to find\n");
scanf("%d",&search);
first = 0;
last = n - 1;
middle = (first+last)/2;
while( first <= last )
{
if ( array[middle] < search )
first = middle + 1;
else if ( array[middle] == search )
{
printf("%d found at location %d.\n", search, middle+1);
break;
}
else
last = middle - 1;
middle = (first + last)/2;
}
if ( first > last )
printf("Not found! %d is not present in the list.\n", search);
return 0;
}
```

Binary Search Program in C using Recursive and Non-Recursive Methods help you to solve the problem using both recursive and non recursive approaches.

Output for Binary Search:

1 2 3 4 5 6 7 8 9 10 11 12 | `Enter number of elements` `6` `Enter 6 integers` `10` `30` `20` `15` `56` `100` `Enter value to find` `33` `Not found! 33 is not present in the list.` |