public class RangeBianrySearch{
public static Range findRangeFor(int value, List<Range> rangeList) {
return findRange(value, rangeList, 0, rangeList.size()-1);
}
private static Range findRangeFor(int value, List<Range> rangeList, int start, int end) {
if(end<0 || start==rangeList.size()) return null;
int index;
index = start+(end-start)/2;
Range range = rangeList.get(index);
if(start!=end){
if(range.getStart()>value){
return findRangeFor(value, rangeList, start, index-1);
}else
if(range.getEnd()<value){
return findRangeFor(value, rangeList, index+1, end);
}
}
if(range.getStart()<=value && range.getEnd()>=value){
return range;
}
return null;
}
}