Example Program to perform binary search on a list of integer numbers
This program uses binary search algorithm to search an element in given list of elements.
/* Program: Binary Search Example * Written by: Chaitanya from beginnersbook.com * Input: Number of elements, element's values, value to be searched * Output:Position of the number input by user among other numbers*/ import java.util.Scanner; class BinarySearchExample { public static void main(String args[]) { int counter, num, item, array[], first, last, middle; //To capture user input Scanner input = new Scanner(System.in); System.out.println("Enter number of elements:"); num = input.nextInt(); //Creating array to store the all the numbers array = new int[num]; System.out.println("Enter " + num + " integers"); //Loop to store each numbers in array for (counter = 0; counter < num; counter++) array[counter] = input.nextInt(); System.out.println("Enter the search value:"); item = input.nextInt(); first = 0; last = num - 1; middle = (first + last)/2; while( first <= last ) { if ( array[middle] < item ) first = middle + 1; else if ( array[middle] == item ) { System.out.println(item + " found at location " + (middle + 1) + "."); break; } else { last = middle - 1; } middle = (first + last)/2; } if ( first > last ) System.out.println(item + " is not found.\n"); } }
Output 1:
Enter number of elements: 7 Enter 7 integers 4 5 66 77 8 99 0 Enter the search value: 77 77 found at location 4.
Output 2:
Enter number of elements: 5 Enter 5 integers 12 3 77 890 23 Enter the search value: 99 99 is not found.
Ashrumochan Senapati says
Why you are still using the old approach for binary search.
Directly we can use the utility methods of utility class – java.util.Arrays
Methods Example-
===============
public static int binarySearch(primitive() p,Primitive key)
public static int binarySearch(Object() o,Object key)
public static int binarySearch(Object() o,Object key,Comparator c)
Srinivas Reddy says
Thanks Ashrumochan for your suggestion. It works fine and great share……
Deepak Raj says
Nice one.. Thanks.
Lueos Joshef says
Thanks Ashrumochan Senapati,Good to know about “java.util.Arrays” class. Really helped a lot…
You made my day!!!
maulik says
i found array index out of bound exception while executing this code.give me solution for that.
krishna says
I just requesting a clarification , In my binary search algorithm classes it has been told that , if sort is not done before a Binary search it is almost equal to Linear search . In this example sorting of array is not done(Please correct me if I am missing something ) .
Jagriti says
Yes, as far as i know me too think sorting is required. This program gives false output if u search for the value 8 considering the above numbers
RAM says
Yes..Sorting is prerequisite for Binary Search.
kishor singh says
Enter number of elements:
6
Enter 6 integers
12
3
5
7
9
4
Enter the search value:
4
4 is not found.
Javed says
This is not binary search.. The basic requirement of binary search should be a presorted array in ascending order if iam not wrong…
Preeti says
Yes , we should sort before searching the element.
Arrays.sort(array)
Otherwise above program wont work