import java.util.Arrays;
/**
* 递归实现二分查找法
* @author 肖
*
*/
public class RankTest {
/**
*
* @param key
* @param a 数组
* @return int 索引
*/
public static int rank(int key, int[] a) {
return rank(key, a, 0, a.length - 1);
}
public static int rank(int key, int[] a, int lo, int hi) {
if (lo > hi) return -1;
int mid = lo + (hi - lo) / 2;
if (key < a[mid]) return rank(key, a, lo, mid - 1);
else if (key > a[mid]) return rank(key, a, mid + 1, hi);
else return mid;
}
public static void main(String[] args) {
int[] b = {1,3,5,7,9,5,4,13,12,14,15};
Arrays.sort(b);//排序
System.out.println(rank(15,b));//查找 15 在 b[] 中的索引位置
}
}
在调用二分查找法之前必须先将数组排序;