二分查询法,可以理解为把一窜已经有序的 int 数组不断地一分为二来进行查询,关键在于对比查询值与中间值,看查询值在前半段数据或是后,再将所在的数据段重新分割,继续查询,直到锁定该查询值。
自定义数组,从中获取3的地址。
public class BinarySearch {
public static void main(String[] args) {
int[] a = {0,1,2,3,4,5,6,7,8,9,10,11};
System.out.println(rank(3, a)+1);
}
public static int rank(int key,int[] a) {
int low =0;
int high = a.length-1;
while (low<high) {
int min = high - low;
if (key<a[min]) {
high = min-1;
}
else if (key>a[min]) {
low = min+1;
} else {
return min;
}
}
return -1;
}
}
结果:4
(结果是3,或者4看具体需要设定,这里是指数组中第四个数)