Table of contents
1.
Introduction
2.
What is a Binary Search in Java?
3.
Why Use Binary Search Over Linear Search?
4.
Why Use Binary Search?
5.
Example of Binary Search in Java
5.1.
Java
6.
Binary Search Algorithm in Java: How It Works Step-by-Step
7.
Methods for Java Binary Search
7.1.
1. Recursive Method for Binary Search Java
7.2.
2. Iterative Method for Binary Search Java
7.3.
3. Implementation of Built-in Binary Search in Java
8.
Time and Space Complexity Analysis
8.1.
Time Complexity of Binary Search
8.2.
Space Complexity of Binary Search
8.3.
Comparison with Linear Search in Java
8.4.
 
9.
Binary Search in Java Collections
10.
Binary Search vs Linear Search: Key Differences
11.
Real-World Applications of Binary Search
11.1.
Real-World Examples
12.
When and Where to Use Binary Search in Java
12.1.
When to Use Binary Search in Projects
13.
Frequently Asked Questions
13.1.
What does binary search return if not found in Java?
13.2.
What is the main condition of binary search?
13.3.
When can binary search not be used?
13.4.
What is the formula for binary search in Java?
13.5.
What is the main advantage of binary search in Java?
13.6.
How to perform Binary search in Java?
14.
Conclusion
Last Updated: Jul 6, 2025
Medium

Binary Search in Java

Author Manvi Chaddha
2 upvotes
Career growth poll
Do you think IIT Guwahati certified course can help you in your career?

Introduction

Binary search is the most widely used searching algorithm used to search an item from a sorted list; It is also known as half interval search, logarithmic search, and binary chop. Using binary search takes the time complexity of O(log N) as compared to linear searching an item that takes the time complexity of O(N), where N is the number of items in the search space. 

Binary Search in Java

What is a Binary Search in Java?

Binary search is an efficient algorithm to find the position of a target value within a sorted array by repeatedly dividing the search interval in half. It compares the target with the middle element, reducing the search space until the element is found or the search space is empty.

Why Use Binary Search Over Linear Search?

When working with data in Java, choosing the right search algorithm can significantly affect performance. Here are three key reasons that highlight the advantages of binary search in Java compared to linear search.

Type 1: Time Complexity & Performance
Binary search vs linear search shows a major difference in efficiency. Binary search has a time complexity of O(log n), making it much faster for large sorted arrays, while linear search takes O(n) time as it checks each element sequentially. For example, in a list of 1 million sorted elements, binary search may need only ~20 comparisons, while linear search might need up to a million.

This proves binary search is ideal when performance and scalability matter.

Type 2: Data Requirements
A key difference in linear search vs binary search performance lies in data prerequisites. Binary search can only be used on sorted arrays, while linear search works on both sorted and unsorted datasets. This sorting requirement is a trade-off for faster access speed with binary search, especially in sorted array search in Java applications.

 

Type 3: Real-World Use Cases
When to use binary search depends on the context. It’s ideal for applications like searching usernames, dictionary words, or sorted user IDs, where data is pre-sorted and speed is critical. In contrast, linear search is better for small lists or when the data isn’t sorted, such as checking if a user exists in a small input list.

These examples reflect practical use cases in login systems, e-commerce filtering, and search tools.

Why Use Binary Search?

Binary search is a powerful searching technique in Java and other programming languages, known for its high efficiency in sorted datasets. With a time complexity of O(log n), it significantly outperforms linear search when handling large collections. Here's why binary search is the go-to choice for efficient data retrieval:

1. High Efficiency on Large Data

Binary search dramatically reduces the number of comparisons required by dividing the search space in half at every step. In a dataset of 1,000 elements, it takes at most 10 steps to find a match—compared to 1,000 in the worst case of linear search. This makes it ideal for large arrays, directories, or databases where speed matters.


2. Predictable Time Complexity

One of the main advantages of binary search is its logarithmic time complexity—O(log n). This makes its performance highly predictable, even with increasing dataset sizes. Whether you’re working with 1,000 or 1,000,000 items, the increase in time required is minimal compared to linear approaches.
This predictability is especially beneficial in performance-critical systems like search engines, scheduling, or gaming.


3. Optimized for Sorted Collections

Binary search is designed specifically for sorted arrays or lists, where its divide-and-conquer logic shines. Java’s Collections.binarySearch() and Arrays.binarySearch() methods are optimized implementations that rely on this principle.
If your dataset is already sorted (like prices, timestamps, or user IDs), using binary search gives you faster and more accurate results than linear methods.

When working with large, sorted data, binary search offers unmatched performance, predictability, and scalability, making it a core concept in efficient Java programming.

Example of Binary Search in Java

  • Java

Java

public class BinarySearchExample {
public static int binarySearch(int[] arr, int target) {
int left = 0, right = arr.length - 1;

while (left <= right) {
int mid = left + (right - left) / 2;

if (arr[mid] == target)
return mid; // Target found
else if (arr[mid] < target)
left = mid + 1; // Search right half
else
right = mid - 1; // Search left half
}
return -1; // Target not found
}

public static void main(String[] args) {
int[] numbers = {2, 5, 8, 12, 16, 23, 38};
int target = 16;
int result = binarySearch(numbers, target);

if (result == -1)
System.out.println("Element not found");
else
System.out.println("Element found at index: " + result);
}
}
You can also try this code with Online Java Compiler
Run Code

Binary Search Algorithm in Java: How It Works Step-by-Step

  1. Start with two pointers: left at the beginning and right at the end of the sorted array.
  2. Calculate the middle index: mid = left + (right - left) / 2.
  3. Compare the middle element with the target:
    1. If equal, return the index.
    2. If the middle element is less than the target, move left to mid + 1 (search right half).
    3. If greater, move right to mid - 1 (search left half).
  4. Repeat steps 2-3 until left exceeds right.
  5. If the element is not found, return -1.

Methods for Java Binary Search

  1. Recursive Method
  2. Iterative Method
  3. Inbuild Method

1. Recursive Method for Binary Search Java

Implementation of Recursive Binary Search Java:

// Recursive binary search Java Implementation
public class BinarySearchJavaRecursive
{
 static int binarySearch(int arr[], int left, int right, int x)
    {
        if (right >= left) {
            int mid = left + (right - left) / 2;
 
            // If the element is present at the
            // middle itself
            if (arr[mid] == x)
                return mid;
 
            // If element is smaller than mid, then
            // it can only be present in left subarray
            if (arr[mid] > x)
                return binarySearch(arr, left, mid - 1, x);
 
            // Else the element can only be present
            // in right subarray
            return binarySearch(arr, mid + 1, right, x);
        }
 
        // We reach here when element is not present
        // in array
        return -1;
    }
   
    public static void main(String[] args)
    {
        int[] array = {10, 13, 34, 45, 56, 60, 70};
        int key = 56;
        int index = binarySearch(array, 0, array.length-1, key);
        if(index == -1){
            System.out.println("Element not found");
        }
        else{
        System.out.println("The index of " + key + " is " + index);
        }
    }


}
You can also try this code with Online Java Compiler
Run Code

 

Output:

The index of 56 is 4

2. Iterative Method for Binary Search Java

// Iterative Binary Search Java Implementation
public class BinarySearchJavaIterative {
    // Returns index of x if it is present in arr[],
    // else return -1
    static int binarySearch(int arr[], int target) {
        int left = 0, right = arr.length - 1;
        while (left <= right) {
            int middle = left + (right - left) / 2;


            // Check if x is present at mid
            if (arr[middle] == target)
                return middle;


            // If x greater, ignore left half
            if (arr[middle] < target)
                left = middle + 1;


            // If x is smaller, ignore right half
            else
                right = middle - 1;
        }


        // if we reach here, then element was
        // not present
        return -1;
    }


    public static void main(String[] args) {
        int[] arr = { 10, 13, 24, 35, 46, 57, 68 };
        int target = 68;
        int res = binarySearch(arr, target);
        if (res == -1) {
            System.out.println("Element not found");
        } else {
            System.out.println("Element found at index " + res);
        }
    }
}
You can also try this code with Online Java Compiler
Run Code

 

Output:

Element found at index 6

3. Implementation of Built-in Binary Search in Java

Java provides an in-built method for binary search in the java.util.Arrays class. The method Arrays.binarySearch() efficiently searches for a specific element in a sorted array and returns its index if found. If the element is not present, it returns a negative value indicating the insertion point.

Here’s the implementation:

import java.util.Arrays;

public class BinarySearchExample {
    public static void main(String[] args) {
        // Sorted array
        int[] arr = {10, 20, 30, 40, 50, 60, 70};
        
        // Element to search
        int key = 40;
        
        // Using Arrays.binarySearch()
        int result = Arrays.binarySearch(arr, key);
        
        // Output the result
        if (result >= 0) {
            System.out.println("Element " + key + " found at index: " + result);
        } else {
            System.out.println("Element " + key + " not found. Insertion point: " + (-result - 1));
        }
    }
}
You can also try this code with Online Java Compiler
Run Code

Output

If the element exists in the array:

Element 40 found at index: 3

If the element does not exist in the array (e.g., key = 35):

Element 35 not found. Insertion point: 3

Time and Space Complexity Analysis

Understanding the time and space complexity of Binary Search in Java is essential for evaluating its efficiency, especially when compared to simpler methods like linear search. Binary search is widely used due to its fast performance on sorted arrays or collections, and its minimal memory usage.

Time Complexity of Binary Search

Binary Search divides the input array into halves repeatedly until it finds the target value or the search space is empty. Here's a breakdown of the time complexity in different scenarios:
 

Best Case – O(1)
The best case occurs when the target element is located at the middle index on the first comparison. This requires only one operation, making it the fastest scenario.
 

Average Case – O(log n)
In most cases, binary search cuts the search range in half with each step. The number of steps needed is proportional to log base 2 of the total elements, which is very efficient even for large datasets.
 

Worst Case – O(log n)
Even in the worst scenario, where the target is not present or located at the far end, binary search still only takes log(n) comparisons, significantly faster than checking every element one by one.

Space Complexity of Binary Search

The space complexity depends on the implementation:

Iterative binary search uses O(1) extra space because it only needs a few variables to track the low, high, and mid indices.

Recursive binary search uses O(log n) space due to the recursive call stack.

For applications where memory efficiency is important, the iterative approach is preferred.

Comparison with Linear Search in Java

The table below shows how binary search compares to linear search in terms of performance and space requirements:

FactorBinary SearchLinear Search
Best CaseO(1)O(1)
Average CaseO(log n)O(n)
Worst CaseO(log n)O(n)
Space (Iterative)O(1)O(1)
Requires Sorted DataYesNo

 

The efficiency of binary search in Java makes it ideal for large datasets, provided the data is sorted. Its logarithmic time complexity and minimal space usage give it a major advantage over linear search, making it one of the most essential algorithms in Java programming.

Binary Search in Java Collections

Java Collections framework provides the Collections.binarySearch() method to perform binary search on a List. The list must be sorted in natural order or by a comparator for accurate results. The method returns the index of the element if found or a negative value indicating the insertion point.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class BinarySearchInCollections {
    public static void main(String[] args) {
        // Sorted list
        List<Integer> list = new ArrayList<>();
        Collections.addAll(list, 10, 20, 30, 40, 50, 60, 70);
        
        // Element to search
        int key = 40;
        
        // Using Collections.binarySearch()
        int result = Collections.binarySearch(list, key);
        
        // Output the result
        if (result >= 0) {
            System.out.println("Element " + key + " found at index: " + result);
        } else {
            System.out.println("Element " + key + " not found. Insertion point: " + (-result - 1));
        }
    }
}
You can also try this code with Online Java Compiler
Run Code

Output

If the element exists:

Element 40 found at index: 3

If the element does not exist (e.g., key = 35):

Element 35 not found. Insertion point: 3

Here is the full content structured as requested, including SEO keywords and practical clarity for learners:

Binary Search vs Linear Search: Key Differences

Type 1: Core Differences in Logic and Performance
Linear search uses a sequential approach, scanning each element until the target is found or the end is reached. In contrast, binary search uses a divide-and-conquer approach by repeatedly dividing the sorted array in half to find the target.
Time complexity:

Linear Search – O(n)

Binary Search – O(log n)

For large datasets, binary search is significantly faster. For example, searching in a list of 100,000 items may require only ~17 comparisons with binary search, while linear search may take up to 100,000.

Great for understanding Java binary search use cases based on dataset size.

 

Type 2: Data Structure and Requirements
Binary search works only on sorted arrays or lists, while linear search can work on both sorted and unsorted data. For example, if you're searching for a product in a sorted product list, binary search provides fast results. However, in an unsorted list, linear search is the only option unless the data is sorted beforehand.

This highlights an important trade-off: sorting the data first improves search speed later.

A core factor in lookup in sorted list Java use cases.

Real-World Applications of Binary Search

Type 1: Searching in Databases
In relational databases, binary search logic is implemented in B-trees and index-based queries. When a query targets a sorted or indexed column (e.g., user ID, order number), binary search-like logic is used to locate results efficiently.
This dramatically reduces query execution time, especially for large tables. Database engines rely on this approach to offer quick lookups, filters, and range-based queries.

A vital example of binary search in databases and enterprise applications.

 

Type 2: Lookup in Sorted Lists (e.g., usernames, IDs)
In many backend systems, binary search is used to validate or fetch data from sorted collections such as usernames, employee IDs, or product SKUs. For instance, during login, binary search can quickly confirm if a username exists in a sorted array of registered users.
This reduces authentication time and optimizes performance in systems where lookup speed is crucial.

One of the most common binary search real-world examples in development.

Real-World Examples

1. Searching a Word in a Dictionary
Digital dictionaries and spell-checkers often use binary search to find a word from a sorted list. Instead of scanning every word, the program checks the middle word and narrows the search range—just like how we look up words in a printed dictionary.
 

2. Finding an Element in a Sorted List or Database
When data like usernames, prices, or timestamps are stored in sorted order, binary search can quickly determine if a particular value exists. For instance, in stock trading apps or e-commerce product searches, it reduces response time significantly.
 

3. Optimizing Solutions in Algorithmic Problems
Binary search is frequently used in competitive programming and technical interviews to optimize solutions. Examples include finding the minimum element in a rotated sorted array or solving problems where the answer lies within a range (like minimum viable capacity or threshold).

When and Where to Use Binary Search in Java

Use binary search in Java when dealing with large, sorted datasets where performance matters, such as search filters, real-time lookups, and ID matching. The algorithm is ideal when data is static and only needs to be searched frequently.
Use linear search in smaller datasets or when the data isn’t sorted and sorting is not feasible.

In Java binary search use cases, always prefer binary search for speed and scalability.

When to Use Binary Search in Projects

Binary Search should be used when the dataset is sorted and fast lookups are required. It is ideal for:

  • Real-time applications needing quick data access (e.g., search engines, live tracking systems).
     
  • High-performance systems handling millions of records where linear search would be too slow.
     
  • Memory-efficient applications, especially when using the iterative version.
     

In any project involving frequent search operations on sorted data, binary search significantly improves performance and reliability.

Frequently Asked Questions

What does binary search return if not found in Java?

If the target element is not found, binary search returns -1 to indicate the element does not exist in the array.

What is the main condition of binary search?

The main condition is that the array must be sorted before performing binary search for it to work correctly and efficiently.

When can binary search not be used?

Binary search cannot be used on unsorted arrays because it relies on the order of elements to eliminate half the search space each step.

What is the formula for binary search in Java?

The formula to find the middle index in binary search is:
mid = low + (high - low) / 2
This prevents integer overflow compared to using (low + high) / 2. Adjust low or high based on comparisons.

What is the main advantage of binary search in Java?

The main advantage of binary search is its efficiency, with a time complexity of O(log n). It significantly reduces the number of comparisons required compared to linear search, making it ideal for large, sorted datasets.

How to perform Binary search in Java?

Binary searching works by comparing an input value to the middle element of the array. The comparison determines whether the element equals the  input, is less than the input, or greater than the input. 

Conclusion

Binary search is a highly efficient algorithm for finding elements in sorted arrays or lists in Java. With a time complexity of O(log n), it outperforms linear search, especially for large datasets. By understanding the underlying mechanics and using built-in methods like Arrays.binarySearch() and Collections.binarySearch(), developers can optimize search operations in their Java projects.

Recommended problems:

Recommended Articles:`

  • Iteration Statements in Java
  • Duck Number in Java
  • Hashcode Method in Java 
  • Swap Function in Java
Live masterclass