public static int binarySearch(int[] a, int key)
{
int lo = 0, hi = a.length-1;
while (lo <= hi)
{
int mid = lo + (hi - lo) / 2;
if (key < a[mid]) hi = mid - 1;
else if (key < a[mid]) lo = mid + 1;
else return mid;
}
return -1;
}
// if key appears in the array a[], then a[lo] <= key <= a[hi]
// 如果要查找的数key出现在数组a[]中,那么a[lo] <= key <= a[hi]。