二分查找
二分查找
以后采用的版本,左右开区间
- while循环里面的condition是 left + 1 < right
- 更新左右区间都是 right or left = mid
- 返回 right
不同类型统一化处理
以上是处理 >= 的情况
就是对应这个图里面的right和left找区间
最关键的是区间外是什么范围


补充
Arrays.binarySearch 的工作方式:
- 如果数组中存在目标值:
- 返回目标值的索引(
i >= 0)。
- 返回目标值的索引(
- 如果数组中不存在目标值:
- 返回插入点的负数减一(即
-(插入点) - 1)。 - 这个“插入点”是指目标值在数组中保持排序的位置。
- 返回插入点的负数减一(即
2024-12-17
更多的例题
题目 2300
咋一眼没看出来可以用二分
二分的应用条件:
- 有序(sort(Array))
- 有>=的条件,或者等价的条件
这道题目是 xy > value的形式,可以转化为 y > value/x,接着使用二分来解决
原文的题目截图暂未保留。