Given an integer sorted array (sorted in increasing order) and an element x, find the x in given array using binary search. Return the index of x.

TITLE
:-
Binary Search (Recursive)
PROBLEM:-

Given an integer sorted array (sorted in increasing order) and an element x, find the x in given array using binary search. Return the index of x.

Return -1 if x is not present in the given array.
Note : If given array size is even, take first mid.

Input format :

Line 1 : Array size

Line 2 : Array elements (separated by space)

Line 3 : x (element to be searched)

Sample Input :
6
2 3 4 5 6 8 
5 
Sample Output:
3 
SOLUTION:-
#include <iostream>
using namespace std;
// input - input array
// size - length of input array
// element - value to be searched
int bsearch(int first,int last,int input[],int element)
{
    
    int mid=(first+last)/2;
     if(first==mid||last==mid)
        return -1;
    if(input[mid]==element)
        return mid;
    else if(input[first]==element)
        return first;
    else if(input[last]==element)
        return last;
    else if(input[mid]<element)
    {
        first=mid+1;
        bsearch(first,last,input,element);
    }
    else{
        last=mid-1;
        bsearch(first,last,input,element);
    }
     
    
    
}
int binarySearch(int input[], int size, int element) {
    // Write your code here
    int first=0;
    int last=size-1;
    return bsearch(first,last,input,element);
}


int main() {
    int input[100000],length,element, ans;
    cin >> length;
    for(int i =0;i<length;i++)
    { 
        cin >> input[i];;
    }

    cin>>element;
    ans = binarySearch(input, length, element);
    cout<< ans << endl;
}
Previous
Next Post »

If you have any doubts then please let me know... ConversionConversion EmoticonEmoticon