算法使用两个变量lo和hi,并保证如果键在数组中则它一定在a[lo..hi]中,然后方法进入一个循环,不断将数组的中间键(索引为mid)和被查找的键比较。
如果被查找的键等于a[mid],返回mid;否则算法就将查找范围缩小一半,如果被查找的键小于
atmid]就继续在左半边查找,如果被查找的键大于a[mid]就继续在右半边查找。算法找到被查找的键或是查找范围为空时该过程结束。
public static int rank(int key, int[] arr) {int lo = 0;int hi = arr.length - 1;while (lo <= hi) {int mid = (hi - lo) / 2 + lo;if (key > arr[mid]) lo = mid + 1;else if (key < arr[mid]) hi = mid - 1;else return mid;}return -1;}

