# Binary Search

Embarking on a journey into the realm of computer science, you'll encounter several important concepts that form the foundation of this discipline. One such concept, paramount to your understanding of data structures and algorithms, is the Binary Search. In its simplicity, it offers an efficient means to search through sorted lists or arrays. Providing a thorough exploration of the Binary Search, this article delves into its meaning, principles, and functioning along with providing a step-by-step example of its application. Further, you will get to explore the advantages of binary search in computer programming, and understand the crucial role of the binary search tree.

#### Create learning materials about Binary Search with our free learning app!

• Flashcards, notes, mock-exams and more
• Everything you need to ace your exams

Moreover, this piece provides a detailed examination of Binary Search Time Complexity, followed by a dive into its advanced applications and ways to optimise its use. So, fasten your seat belts and prepare to delve deep into the fascinating world of binary search.

## Understanding Binary Search in Computer Science

Binary Search is a popular, efficient technique used for searching within data structures like arrays and lists when the data inside is already sorted.

### What is a Binary Search?

Binary search is an efficient search algorithm in computer science used when data is sorted. This algorithm divides the list of data in half in each step until the desired element is found.

Computers are considered excellent at tasks like searching and sorting and Binary Search is a prime example of that. As a binary search continues to reduce the search space by half with each step, it can search through large sets of data efficiently, even millions or billions of entries.

### Basic Principles of Binary Search Algorithm

Binary Search follows some basic principles which includes the following:
• The list should be sorted
• It starts by comparing the target element with the middle element of the list
• If the target element matches with the middle element, the position is returned
• If target element is greater than the middle element, the search continues in the right half of the list
• If target element is smaller, the search continues in the left half of the list.
Here the search range gets halved after each comparison which is why this algorithm is called Binary Search.

Interesting Fact: Did you know Binary Search is also known as half-interval search, logarithmic search, or binary chop?

#### How Does Binary Search Work

Now that you know what Binary Search is and its principles, let's delve into how it works. The algorithm takes an array and an element as input. It then performs the following steps:
1. Compute the mid index of the list
2. If element at mid index is equal to the target, return the mid index
3. If element at mid index is less than the target, repeat steps 1 and 2 for the right sub-list
4. If element at mid index is greater than the target, repeat steps 1 and 2 for the left sub-list
In terms of computational complexity, it operates in logarithmic time, meaning $$\log_{2}n$$ comparisons in the worst case, where $$n$$ is the number of elements in the list.

#### Binary Search Example: Step by Step

For an illustrative example, assume you need to find the number 50 in a sorted list of 100 numbers from 1 to 100.

• Step 1: Your mid point in the array is 50 (which is what we are looking for in this case). In other cases, we if the target value does not match the mid point, you may need to move to the next steps.
• Step 2: Since 50 equals to the middle number, our search concludes. If it was greater, the search would have continued towards the right sub-list; if it was smaller, it would have continued with the left sub-list.
Using Binary Search you found the target number in just one operation instead of manually checking the entire list. This example nicely illustrates why binary search is considered highly efficient, particularly when working with large datasets.

## Exploring the Features of Binary Search

Binary Search stands out among other search algorithms because of its ability to perform incredibly efficiently. Compared to linear search, where each element is checked one by one, binary search enables you to search through sorted data much more speedily and effectively.

### Advantages of Binary Search in Computer Programming

In computer programming, the benefits of Binary Search are vast.
• Efficiency: Binary Search dramatically reduces the time it takes to search for an element in a sorted list. Regardless of the size of the list, it performs in logarithmic time, i.e., $$O(\log{}n)$$, where $$n$$ is the number of elements. It keeps halving the list until it locates the desired value.
• Space Saving: It does not require any extra space and operates directly on the input data.
• Readability: The implementation of Binary Search is easy to understand. It's simple yet powerful - a trait highly appreciated in programming.
• Universality: Binary Search can be used in various areas where sorted data structures are involved. It's not just limited to arrays; it is used in list or array-based data structures such as Trees and Heaps too.
Even bearing its strengths, you should be aware that Binary Search works best with a sorted list. If working with an unsorted list, the cost of sorting could surpass the benefits, and it may be advisable to use other search algorithms.

### Importance of Binary Search Tree

A Binary Search Tree (BST) is a rooted binary tree where each node contains a value from a well-ordered set, such that for any given node:
• All elements in the left subtree are less than the node
• All elements in the right subtree are greater than the node
The importance of a Binary Search Tree in computer science is immense:
• Searching: Binary Search Trees allow for fast search, insert, delete operations. Searching operation in BST takes $$O(\log{n})$$ time which makes it faster than linear search and hashing.
• Storing Data: BST is used for storing data that naturally needs to be ordered, such as dictionary words or the file system on a computer.
• Forming Ordered Lists: BST can quickly create an ordered list of its elements, which can be useful in various applications.
Remember, the BST property makes sure that every element on the left is less than the current item, and everything on the right is larger. Sounds familiar, right? It's basically the sorted property that enables binary search.

### Understanding the Role of Binary Search Tree

Let's go into more depth about the role of the Binary Search Tree (BST). BST, identifiable by its inherent properties, plays a critical part in programming and algorithm design. Its essential role revolves around data storage and retrieval. BSTs help organise the data in such a way that search, insertion, and deletion operations can be performed more efficiently than other data structures like arrays, linked lists, stacks, and queues.

For example, let’s imagine a game where users need to quickly look up high scores. If one million players are playing, we would choose a binary search tree to maintain the scores. A new score could be added or an existing one updated relatively quickly, much faster than doing so in a linked list or an array. We could even find a player’s rank in the leaderboard, all thanks to the BST.

Additionally, BSTs serve as data structures for dynamically sorting data or maintaining sorted lists. Consequently, they are used extensively in databases and filesystems where fast retrieval is a crucial need. BSTs are also a fundamental basis for more abstract data structures like AVL Trees, Red-Black Trees, R Trees, and heaps. Remember, BSTs are dynamic data structures, which means they grow and shrink with the course of the program, and can be implemented using pointers or references. So, comprehending Binary Search and Binary Search Trees, two vital components of computer science and algorithm design, can significantly enhance your programming capabilities. They can help you solve various complex problems in a more manageable way and play a significant role in arenas where data is changing rapidly, like in most of today's real-world applications.

## Delving into the Technical Aspects of Binary Search

Binary Search proves to be a vital aspect of computer science, particularly in scenarios involving vast datasets. It significantly reduces time complexity when compared to other search algorithms, thus making it notably efficient.

### Binary Search Time Complexity: An Examination

When you use Binary Search, the key element that makes it so effective is its time complexity, often represented as $$O(\log_{2}n)$$, where $$n$$ is the number of elements in the list. But what does this denote?

In computer science, time complexity refers to the computational complexity that describes the amount of computational time taken by an algorithm to run, as a function of the size of the input to the program. $$O(\log_{2}n)$$ means that the time it takes to execute a binary search will increase logarithmically in relation to the size of the input data set.

This is due to the process of the search algorithm, which halves the dataset with each iteration. As a result, even for large datasets, the number of steps it takes to locate an item grows very slowly compared to the size of the array. If we were to draw a graph representing this complexity, the x-axis can represent the number of elements in the input data set $$n$$, and the y-axis represents the time taken to search an element. The graph will show a logarithmic curve, confirming the time complexity of Binary Search as $$O(\log_{2}n)$$.

#### How Time Complexity Impacts Binary Search

As you know, Binary Search is a search algorithm that finds the position of a target value within a sorted array. It does this by repeatedly dividing the search interval in half. As a result, the effectiveness of the Binary Search algorithm is closely tied to its time complexity. The binary search algorithm checks the middle element of an array. If the middle element is not a match, it ignores one half of the array and repeat the process on the other half. As the range considered decreases by half at each step, this dramatically reduces the time it takes to find the target value. This is a considerable advantage, especially in instances where you're dealing with immense data sets. The specific nature of how time complexity impacts binary search is what allows it to have such consistent performance, even as the size of your data set increases. Knowing this, you can appreciate why this process leads to an effective, speedy search, and why Binary Search is a core concept in computer science.

### Advanced Binary Search Applications and Scenarios

Binary Search is not a beginner algorithm for beginner programmers to solve simple search problems; it has more advanced applications and is used in a variety of scenarios:
• Machine Learning: It is used in machine learning algorithms to search for an optimal model in a sorted list.
• Data Mining: Binary Search is used in data mining processes to search for specific data in a large sorted set of data. In the case of large databases, the efficiency of the binary search can be a game-changer.
• Networking: In computer networks, binary search helps in fast IP routing through routing tables.
• Optimisation Algorithms: It's also used in various optimisation algorithms where the goal is to minimise or maximise a certain objective function, given certain constraints.

Let’s take a look at an example from coding competitions. In coding competitions like ACM ICPC, Codeforces, and TopCoder, many problems include arrays or lists of numbers. Some of these require you to find if a given number exists or not in the set. Using Binary Search in such cases can reduce the execution time drastically, thereby increasing the speed at which the problem is solved.

#### How to Optimise the Use of Binary Search

With the understanding of how Binary Search works, it's possible to make some optimisations. One of the ways to do this is by modifying your Binary Search to a search algorithm that's tailored specifically to the data you're sorting through. For example, in some cases, you might have repeated elements in your array or particular conditions based on your problem, which could mean that binary search needs to be adjusted. Also, you could optimise the binary search by adding condition/s based on the nature of your problem. For example, there could be a situation where you need to find the first or last occurrence of a number instead of the occurrence. In such a case, modifying the binary search to include new conditions during comparison can help save time and make the search process more efficient. Remember, every problem has unique requirements and using Binary Search directly may not always yield the best result. The key lies in understanding the problem, adjusting the algorithm accordingly, and refining the search conditions to make the algorithm work for your specific case.

## Binary Search - Key takeaways

• Binary Search is an efficient search algorithm used to search through data that is already sorted. It divides the list of data in half with each step until the target element is found.

• Important principles of Binary Search include: the list should be sorted, the search starts by comparing the target to the middle element of the list and depending on the comparison, the search continues in either the right or left half of the list.

• Binary Search works by performing steps such as computing the mid index of the data list, comparing elements with the target and repeating these steps for the relevant sublist.

• Binary Search has a logarithmic time complexity, which means it operates in $$\log_{2}n$$ comparisons in the worst case where $$n$$ is the number of elements in the list. This is highly efficient, especially for large data sets.

• Advantages of Binary Search include its efficiency (it reduces the time it takes to search for an element), it doesn’t require extra space and operates directly on the input data, it's easy to understand, and it can be used in various areas where sorted data structures are involved.

#### Flashcards in Binary Search 15

###### Learn with 15 Binary Search flashcards in the free StudySmarter app

We have 14,000 flashcards about Dynamic Landscapes.

How to build a binary search tree?

To build a binary search tree, start by creating a new node for the root if the tree is empty. If the tree is not empty, compare the new key to the key in the current node. If the new key is less than the current key, move to the left child, if the tree is empty, insert the new key. If the new key is greater than the current key, move to the right child and if the tree is empty, insert the new key.

What is binary search?

Binary search is a fast search algorithm with run-time complexity of Ο(log n). It's used to search a sorted list by repeatedly dividing the search interval in half. The goal is to find a specific value by comparing the middle element of a portion of the list. If the compared value is not equal, the list is halved, with the left or right half chosen for the next step according to whether the target is less or more than the middle element.

How to binary searches work?

Binary searches work by repeatedly dividing in half the portion of the list that could contain the item, until you've narrowed down the possible locations to just one. The process begins by determining the middle of a sorted list. If the desired value is lower than the middle element, the process continues on the lower half; if it's higher, it continues on the upper half. The steps repeat until finding the value or until the sub-list is empty.

How does a binary search algorithm work?

A binary search algorithm works by first sorting a list, then repeatedly dividing it in half. If the value we're searching for is higher than the middle item, it looks in the first half; if it's lower, it looks in the second half. This process is repeated recursively or iteratively until the value is found or the range of search is restricted to one item. This strategy, often called divide and conquer, efficiently reduces the search area, making binary search much faster than linear search in large lists.

How to binary search?

To perform a binary search, start in the middle of a sorted list. Compare the middle item with your target item; if they're not matching, determine if the target is larger or smaller than the middle item. If it's larger, repeat the search process on the right half of the list, if it's smaller, then use the left half. Continue this process until you find the target item or confirm that it's not in the list.

## Test your knowledge with multiple choice flashcards

What is Binary Search in Computer Science?

What basic principles does Binary Search follow?

How does a Binary Search algorithm work?

StudySmarter is a globally recognized educational technology company, offering a holistic learning platform designed for students of all ages and educational levels. Our platform provides learning support for a wide range of subjects, including STEM, Social Sciences, and Languages and also helps students to successfully master various tests and exams worldwide, such as GCSE, A Level, SAT, ACT, Abitur, and more. We offer an extensive library of learning materials, including interactive flashcards, comprehensive textbook solutions, and detailed explanations. The cutting-edge technology and tools we provide help students create their own learning materials. StudySmarter’s content is not only expert-verified but also regularly updated to ensure accuracy and relevance.

##### StudySmarter Editorial Team

Team Binary Search Teachers

• Checked by StudySmarter Editorial Team