例题:二分查找
找到数组ints中,数字7第一次出现的索引(ints已经升序排列)
class Solution {
public static void main(String[] args) {
// 找到7第一次出现的索引
int[] ints = {1, 3, 5, 7, 7, 8, 8, 9, 12, 16};
int l = 0, r = ints.length-1;
// 一定要l < r
while (l < r) {
// 避免int溢出
int mid = l + (r - l) / 2;
// mid<=r,能够将l和r逼近目标左边界
if (ints[mid]>=7) {
r = mid;
} else {
l = mid + 1;
}
}
System.out.println(l);
System.out.println(r);
}
}
评论区