Skip to content
Related Articles
C Program for Binary Search (Recursive and Iterative)
• Difficulty Level : Easy
• Last Updated : 16 Jan, 2018

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!

Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.

My Personal Notes arrow_drop_up