Site icon

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
Exit mobile version