Using Recursion
int binarySearch(int arr[], int l, int r, int x)
{
if (l > r) {return -1;}
int mid = Math.floor((l + r) / 2);
if (arr[mid] > x) return binarySearch(arr, l, mid-1, x);
if (arr[mid] < x) return binarySearch(arr, mid+1, r, x);
return mid;
}
Using Iterative
int BinarySearch(int A[], int l, int r, int key)
{
while( r - l > 1 )
{
int mid = Math.floor((l + r) / 2);
if( A[mid] <= key )
l = mid;
else
r = mid;
}
if( A[l] == key )
return l;
else
return -1;
}