中间的取值为mid=(low+high)/2不大于mid的最大整数
public class Search {
public static void main(String[] args) {
int[] b = { 10, 21, 31, 41, 61, 81, 101 };
System.out.println("查找元素在数组中的下标为:" + methond(b, 30));
}
// 查找a在数组中的下标
public static int methond(int[] b, int e) {
int low, high, mid;
low = 1;
high = b.length;
mid = (high + low) / 2;
while (low <= high) {// 临界条件
if (b[mid] > e) {// 数据在mid的左半部分
high = mid - 1;
mid = (low + high) / 2;
} else if (b[mid] < e) {// 数据在mid的右半部分
low = mid + 1;
mid = (low + high) / 2;
} else if (b[mid] == e) {
return mid;
}
}
return -1;// 查找失败
}
}
折半查找的最多查找次数2的(x-1)次方大于等于n,此处n为元素个数,x的最小整数值即为最大查找次数。注意比较符号为大于等于。