1 /**
2 A class for executing binary searches in an array.
3 */
4 public class BinarySearcher
5 {
6 /**
7 Finds a value in a range of a sorted array, using the binary
8 search algorithm.
9 @param a the array in which to search
10 @param low the low index of the range
11 @param high the high index of the range
12 @param value the value to find
13 @return the index at which the value occurs, or -1
14 if it does not occur in the array
15 */
16 public static int search(int[] a, int low, int high, int value)
17 {
18 if (low <= high)
19 {
20 int mid = (low + high) / 2;
21
22 if (a[mid] == value)
23 {
24 return mid;
25 }
26 else if (a[mid] < value )
27 {
28 return search(a, mid + 1, high, value);
29 }
30 else
31 {
32 return search(a, low, mid - 1, value);
33 }
34 }
35 else
36 {
37 return -1;
38 }
39 }
40 }
41