/** A class for executing binary searches through an array. */ public class BinarySearcher2 { /** Constructs a BinarySearcher. @param anArray a sorted array of integers */ public BinarySearcher2(int[] anArray) { a = anArray; } /** Finds a value in a sorted array, using the binary search algorithm. @param v the value to search @return the index at which the value occurs, or -1 if it does not occur in the array */ public int search(int v) { int low = 0; int high = a.length - 1; return search(v, low, high); } public int search(int v, int l, int h) { int mid = (l + h) / 2; int diff = a[mid] - v; if(l > h) return -1; if (diff == 0) return mid; else if (diff < 0) l = mid + 1; else h = mid - 1; return search(v, l, h); } private int[] a; }