Binary Tree Array Search
This version returns the index of the goal, or -1 if not found.
public static int search (String [] arr, int low,
int high, String goal) {
if ( high < low )
return -1; // goal not found
else
{ int root = (low + high) / 2;
int test = goal.compareTo(arr[root]);
if ( test == 0 )
return root; // found
else if ( test < 0 )
return search(arr, low,
root - 1, goal);
else return search(arr, root + 1,
high, goal); } }
This binary search uses divide-and-conquer and takes O(log(n)) time.