最下面有代码实现
知识点:
强调:数组必须有序
1.关于求中间数的时候可能会遇到的整数溢出问题,可以采用位运算的方式右移一位来解决
2.寻找元素的整体思路就是奇数二分取中间,偶数二分取中间靠左
3.给出一个长度为len的数组,求最多需要的次数,可以转化为
使用电脑上的计算器,因为不能求log以2为底的数字,它默认的log是以10为底,所以可以这样求40亿的数组最多需要的次数
取32次即可,也就是40亿个数据最多只需要32次就能找到
public static int binarySearch(int[] a, int t) {
int l = 0, r = a.length - 1, m;
while (l <= r) {
m = (l + r) / 2;
if (a[m] == t) {
return m;
} else if (a[m] > t) {
r = m - 1;
} else {
l = m + 1;
}
}
return -1;
}