# C Program for Binary Search (Recursive and Iterative)

We basically ignore half of the elements just after one comparison.

1. Compare x with the middle element.
2. If x matches with middle element, we return the mid index.
3. Else If x is greater than the mid element, then x can only lie in right half subarray after the mid element. So we recur for right half.
4. Else (x is smaller) recur for the left half.

Recursive :

## C/C++

 `#include ` ` `  `// A recursive binary search function. It returns location of x in ` `// given array arr[l..r] is present, otherwise -1 ` `int` `binarySearch(``int` `arr[], ``int` `l, ``int` `r, ``int` `x) ` `{ ` `   ``if` `(r >= l) ` `   ``{ ` `        ``int` `mid = l + (r - l)/2; ` ` `  `        ``// If the element is present at the middle itself ` `        ``if` `(arr[mid] == x)  ``return` `mid; ` ` `  `        ``// If element is smaller than mid, then it can only be present ` `        ``// in left subarray ` `        ``if` `(arr[mid] > x) ``return` `binarySearch(arr, l, mid-1, x); ` ` `  `        ``// Else the element can only be present in right subarray ` `        ``return` `binarySearch(arr, mid+1, r, x); ` `   ``} ` ` `  `   ``// We reach here when element is not present in array ` `   ``return` `-1; ` `} ` ` `  `int` `main(``void``) ` `{ ` `   ``int` `arr[] = {2, 3, 4, 10, 40}; ` `   ``int` `n = ``sizeof``(arr)/ ``sizeof``(arr); ` `   ``int` `x = 10; ` `   ``int` `result = binarySearch(arr, 0, n-1, x); ` `   ``(result == -1)? ``printf``(``"Element is not present in array"``) ` `                 ``: ``printf``(``"Element is present at index %d"``, result); ` `   ``return` `0; ` `} `

Iterative

## C/C++

 `#include ` ` `  `// A iterative binary search function. It returns location of x in ` `// given array arr[l..r] if present, otherwise -1 ` `int` `binarySearch(``int` `arr[], ``int` `l, ``int` `r, ``int` `x) ` `{ ` `  ``while` `(l <= r) ` `  ``{ ` `    ``int` `m = l + (r-l)/2; ` ` `  `    ``// Check if x is present at mid ` `    ``if` `(arr[m] == x)  ` `        ``return` `m;   ` ` `  `    ``// If x greater, ignore left half   ` `    ``if` `(arr[m] < x)  ` `        ``l = m + 1;  ` ` `  `    ``// If x is smaller, ignore right half  ` `    ``else`  `         ``r = m - 1;  ` `  ``} ` ` `  `  ``// if we reach here, then element was not present ` `  ``return` `-1;  ` `} ` ` `  `int` `main(``void``) ` `{ ` `   ``int` `arr[] = {2, 3, 4, 10, 40}; ` `   ``int` `n = ``sizeof``(arr)/ ``sizeof``(arr); ` `   ``int` `x = 10; ` `   ``int` `result = binarySearch(arr, 0, n-1, x); ` `   ``(result == -1)? ``printf``(``"Element is not present in array"``) ` `                 ``: ``printf``(``"Element is present at index %d"``, result); ` `   ``return` `0; ` `} `

Please refer complete article on Binary Search for more details!

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up