中级农民
- 积分
- 101
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-10-7
- 最后登录
- 1970-1-1
|
java 版本binary search
public int search(ArrayReader reader, int target) {
int hi = 1;
while( reader.get(hi) != Integer.MAX_VALUE && reader.get(hi) < target)
{
hi *= 2;
}
int lo = hi/2;
// find the first element which equals the target
while(lo<=hi)
{
int mid = lo + (hi-lo)/2;
int val = reader.get(mid);
if (val == target)
return mid;
else if(val > target)
hi = mid -1;
else
lo = mid + 1;
}
return -1;
} |
|