java 高效方法实现二分法
题目要求:请实现有重复数字的有序数组的二分查找。
输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
先考虑这样一个问题:对于一个有序数组来说,什么情况下是不存第一个大于等于 v的位置呢?
即:数组中的所有数都比 v 小,可以写成
if(a[n-1]<v)
return n+1;
判完这个条件以后,aa 数组里就一定可以存在一个位置是答案了。这样的话,我们来设答案在闭区间[Left,right][Left,right]之间
当这个区间只剩下一个数,即Lef
原创
2020-12-19 23:36:34 ·
159 阅读 ·
1 评论