|
|
Binary search Algorithm is one of the most efficient algorithm after Linear search algorithm for Searching an element . Binary search Algorithm mainly involves dividing the list into two halves with their index values and finding the key value of middle element . In each step of the algorithm the middle key value is compared with the search key value . Then there arises 3 situations .
1. If search key value is equal to middle element key value : In this case Search element is found and the process is stopped . The algorithm returns the index where search key is found .
2. If search key value is less than the middle element key value : In this case you need to perform the search towards the Left of the middle element key value .
3. If search key value is greater than the middle element key value : In this case the search need to be performed towards the Right of the middle element key value .
In this Tutorial I will be discussing about Program for Binary Search in C++ and also it Efficiency when compared to linear search algorithm .
Also check : Program for Bubble sort using c++
Efficiency of Binary search Algorithm :
In one of my previous post I discussed about Linear search algorithm . The worst case timing complexity of Linear search Algorithm is O(n) where n is number of elements .
When it comes to Binary search after each case of first bisection the space for searching element is reduced by n/2 elements , similarly after 2nd bisection the space for searching element is reduced by n/4 elements and so on
On the whole the worst case timing complexity of Binary search algorithm is O(logn) .
Also check : Algorithm for searching a Node in Binary Search Tree
If I have missed anything please get it to me through comments . Also share your ideas and logics to improve the program codes through comments .
1. If search key value is equal to middle element key value : In this case Search element is found and the process is stopped . The algorithm returns the index where search key is found .
2. If search key value is less than the middle element key value : In this case you need to perform the search towards the Left of the middle element key value .
3. If search key value is greater than the middle element key value : In this case the search need to be performed towards the Right of the middle element key value .
In this Tutorial I will be discussing about Program for Binary Search in C++ and also it Efficiency when compared to linear search algorithm .
Output for below code:
Note :
To implement a Binary search algorithm the array should be in the sorted order . Use any sorting algorithm to sort the array and then apply Binary search algorithm to search an element .Also check : Program for Bubble sort using c++
Program for Binary search in C++
#include<iostream>
using namespace std ;
int main()
{
int a[10],n,i;
while(1)
{
cout<<"\nEnter the no. of elements in the array :";
cin>>n;
if((n>=0)&&(n<=10))
break;
else
cout<<"\n Array Size must have minimum 1 element and maximum 10 elements \n";
}
cout<<"\n---------------------------------\n";
cout<<"Enter array elements :";
cout<<"\n---------------------------------\n";
for(i=0;i<n;i++)
{
cout<<"["<<(i+1)<<"]";
cin>>a[i];
}
char ch;
do
{
int key;
cout<<"\n Enter the element to be Searched \n";
cin>>key;
int lbound=0;
int ubound=n-1;
int mid=(lbound+ubound)/2;
int c=1;
while((key!=a[mid])&&(lbound<=ubound))
{
if(key>a[mid])
lbound=mid+1;
else
ubound=mid-1;
mid=(lbound+ubound)/2;
c++;
}
if(key==a[mid])
cout<<"\n"<<key<<" Found at position "<<(mid+1)<<endl;
else
cout<<"\n"<<key<<" not found in the array"<<endl;
cout<<"\n Number of comparisons: "<<c;
cout<<"\n\n continue search (y/n) :";
cin>>ch;
}while((ch=='y')||(ch=='Y'));
return 0;
}
Efficiency of Binary search Algorithm :
In one of my previous post I discussed about Linear search algorithm . The worst case timing complexity of Linear search Algorithm is O(n) where n is number of elements . When it comes to Binary search after each case of first bisection the space for searching element is reduced by n/2 elements , similarly after 2nd bisection the space for searching element is reduced by n/4 elements and so on
On the whole the worst case timing complexity of Binary search algorithm is O(logn) .
Also check : Algorithm for searching a Node in Binary Search Tree
If I have missed anything please get it to me through comments . Also share your ideas and logics to improve the program codes through comments .
0 comments:
Post a Comment