Implement Recursive Binary Search in Java

Description

The following code shows how to implement Recursive Binary Search.

Example


//from   w  w  w . j  a  v a2  s .co  m
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)));
  }
}

The code above generates the following result.





















Home »
  Java Tutorial »
    Development »




Java Algorithms
Java Clipboard
Java Compiler
Java Desktop
Java Virtual Machine
Java Math
OS
Random
Java Robot
Java RuntimeMXBean
Java Timer
Java UUID
Java Internationalization