# Binary Search

Data Structure and AlgorithmsSearching AlgorithmAlgorithms

#### Mastering DAX and Data Models in Power BI Desktop

53 Lectures 5.5 hours

#### Big Data Hadoop

Best Seller

89 Lectures 11.5 hours

#### Data Science Bootcamp with Power BI and Python

Best Seller

52 Lectures 3.5 hours

When the list is sorted we can use the binary search technique to find items on the list. In this procedure, the entire list is divided into two sub-lists. If the item is found in the middle position, it returns the location, otherwise jumps to either left or right sub-list and do the same process again until finding the item or exceed the range.

## The complexity of Binary Search Technique

• Time Complexity: O(1) for the best case. O(log2 n) for average or worst case.
• Space Complexity: O(1)

## Input and Output

Input:
A sorted list of data: 12 25 48 52 67 79 88 93
The search key 79
Output:
Item found at location: 5

## Algorithm

binarySearch(array, start, end, key)

Input − An sorted array, start and end location, and the search key

Output − location of the key (if found), otherwise wrong location.

Begin
if start <= end then
mid := start + (end - start) /2
if array[mid] = key then
return mid location
if array[mid] > key then
call binarySearch(array, mid+1, end, key)
else when array[mid] < key then
call binarySearch(array, start, mid-1, key)
else
return invalid location
End

## Example

#include<iostream>
using namespace std;

int binarySearch(int array[], int start, int end, int key) {
if(start <= end) {
int mid = (start + (end - start) /2); //mid location of the list
if(array[mid] == key)
return mid;
if(array[mid] > key)
return binarySearch(array, start, mid-1, key);
return binarySearch(array, mid+1, end, key);
}
return -1;
}

int main() {
int n, searchKey, loc;
cout << "Enter number of items: ";
cin >> n;

int arr[n]; //create an array of size n
cout << "Enter items: " << endl;

for(int i = 0; i< n; i++) {
cin >> arr[i];
}

cout << "Enter search key to search in the list: ";
cin >> searchKey;

if((loc = binarySearch(arr, 0, n, searchKey)) >= 0)
cout << "Item found at location: " << loc << endl;
else
cout << "Item is not found in the list." << endl;
}

## Output

Enter number of items: 8
Enter items:
12 25 48 52 67 79 88 93
Enter search key to search in the list: 79
Item found at location: 5