Find/search element in sorted integer array (java/binary search algorithm/iterative)

  1. Given sorted integer array in java.
  2. Find or search element/integer in an array using binary search algorithm (with example).
  3. Binary search is a divide and conquer algorithm.
    • Binary search algorithm is used to find element in sorted arrays.
  4. We have already discussed about find element in a sorted integer array using binary search algorithm(recursive).
    • We had discussed in detail about binary search algorithm using java.
    • Recursive post is kind of prerequisite for current post.
  5. Arrays class in java also has predefined binary search function.
    • We have demonstrated its sample code as follows.
int arr[] = {10,20,30,40,50,60,70,80,90,100};
System.out.println(Arrays.binarySearch(arr, 70));
//Output is: 6

1. Find/search element in sorted integer array in java (binary search algorithm)

package org.learn.arrays;
 
import java.util.Arrays;
 
public class BinarySearchIterative {
    public static void main(String[] args) {
        int arr[] = {10,20,30,40,50,60,70,80,90,100};
        //low index
        int low = 0;
        //high index
        int high = arr.length - 1;
        int search = 70;
        int result = binarySearch(arr, search, low, high);
        if(result == -1) {
            System.out.printf("1. Element %d not found in array",search);          
        } else {
            System.out.printf("1. Element %d found at index : %d ",search,result);
        }
        System.out.println("");
         
        search = 60;
        result = binarySearch(arr, search, low, high);
        if(result == -1) {
            System.out.printf("2. Element %d not found in array",search);          
        } else {
            System.out.printf("2. Element %d found at index : %d",search,result);
        }
        System.out.println("");
         
        search = 110;
        result = binarySearch(arr, search, low, high);
        if(result == -1) {
            System.out.printf("3. Element %d not found in array",search);          
        } else {
            System.out.printf("3. Element %d found at index : %d",search,result);
        }
        System.out.println("");
    }
 
    private static int binarySearch(int[] arr, int value, int low, int high) {
     
        while (low <= high) {
            int middle = low + (high - low) / 2;
            if (value < arr[middle]) { // search between low ---> middle
                high = middle - 1;
            } else if (value > arr[middle]) {
                // search in upper half middle + 1 -----> high
                // low to middle already covered in first case
                // so start search from middle + 1 to high here...
                low = middle + 1;
            } else {
                // value == arr[middle]
                // yes we got the element in binary search tree
                return middle;
            }
        }
        return -1;
    }
}

2. Find/search element in sorted integer array (java/binary search algorithm)

1. Element 70 found at index : 6
2. Element 60 found at index : 5
3. Element 110 not found in array