Mega Code Archive

 
Categories / Java Tutorial / Collections
 

Recursive Binary Search Implementation in Java

public class Main {   public static final int NOT_FOUND = -1;   public static int binarySearch(Comparable[] a, Comparable x) {     return binarySearch(a, x, 0, a.length - 1);   }   private static int binarySearch(Comparable[] a, Comparable x, int low, int high) {     if (low > high)       return NOT_FOUND;     int mid = (low + high) / 2;     if (a[mid].compareTo(x) < 0)       return binarySearch(a, x, mid + 1, high);     else if (a[mid].compareTo(x) > 0)       return binarySearch(a, x, low, mid - 1);     else       return mid;   }   public static void main(String[] args) {     int SIZE = 8;     Comparable[] a = new Integer[SIZE];     for (int i = 0; i < SIZE; i++)       a[i] = new Integer(i * 2);     for (int i = 0; i < SIZE * 2; i++)       System.out.println("Found " + i + " at " + binarySearch(a, new Integer(i)));   } }