| 
     
    
 
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))); 
  } 
} 
 
    
     
     
   
    
    |