/* * Return the index of element k within array A if present, * and return -1 if not found */ static public int BinarySearch (int [] A, int k) { return BoundedBinarySearch(A, k, 0, A.length()-1); } /* * Return the index of element k within A[left]...A[right] inclusive if present, * and return -1 if not found */ static public int BoundedBinarySearch (int [] A, int k, int left, int right) { if (left > right) { /* base case: zero size */ return -1; } int mid = (left + right) / 2; if (A[mid] == k) { return mid; } else if (A[mid] > k) { /* look in left half */ return BoundedBinarySearch (A, x, left, mid-1); } else { /* A[mid] < k --- recurse on right half */ return BoundedBinarySearch (A, x, mid+1, right); } }