Binary Search in C++

Here you will learn about binary search in C++.

Binary search is an algorithm used to search for an element in a sorted array. In this algorithm the targeted element is compared with middle element. If both elements are equal then position of middle element is returned and hence targeted element is found.

If both elements are unequal then if targeted element is less or more than middle element we discard the lower or upper half and the search continues by finding new middle element.

Also Read: Linear Search in C++

Below program shows how to implement binary search algorithm in C++.

Program for Binary Search in C++

#include<iostream>
 
using namespace std;
 
int main()
{
    int search(int [],int,int);
    int n,i,a[100],e,res;
    cout<<"How Many Elements:";
    cin>>n;
    cout<<"\nEnter Elements of Array in Ascending order\n";
    
    for(i=0;i<n;++i)
    {
        cin>>a[i];
    }
    
    cout<<"\nEnter element to search:";
    cin>>e;
    
    res=search(a,n,e);
    
    if(res!=-1)
        cout<<"\nElement found at position "<<res+1;
    else
        cout<<"\nElement is not found....!!!";
 
    return 0;
}
 
int search(int a[],int n,int e)
{
    int f,l,m;
    f=0;
    l=n-1;
    
    while(f<=l)
    {
        m=(f+l)/2;
        if(e==a[m])
            return(m);
        else
            if(e>a[m])
                f=m+1;
            else
                l=m-1;
    }
    
    return -1;
}

Output

How Many Elements:5

Enter Elements of Array in Ascending order
12 39 40 68 77

Enter element to search:40

Element found at position 3

Comment below if you have any doubts related to above program for binary search in C++.

10 thoughts on “Binary Search in C++”

  1. The above code has a problem.

    If the required element is at position 0, it gives output as element not found.!!!!
    please correct me if i am wrong!

    1. satish it is because it searchs by value not by index so if you put the value that is present on your 0rth index then it will display it

  2. What if there are 2 same numbers at different positions in the array and we want to find both of their’s position using BS???

  3. what does the “m=(f+1)/2 ” does in “a” vector index seem to me very confusing since when “m” get a no integer number it won’t be able to show the position

Leave a Comment

Your email address will not be published. Required fields are marked *