Method: Array#bsearch_lower_boundary

Defined in:
lib/array_bsearch.rb

#bsearch_lower_boundary(range = 0 ... self.length, &block) ⇒ Object

Return the lower boundary. (inside)



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/array_bsearch.rb', line 10

def bsearch_lower_boundary (range = 0 ... self.length, &block)
  lower  = range.first() -1
  upper = if range.exclude_end? then range.last else range.last + 1 end
  while lower + 1 != upper
    mid = ((lower + upper) / 2).to_i # for working with mathn.rb (Rational)
    if yield(self[mid]) < 0
     lower = mid
    else 
    	upper = mid
    end
  end
  return upper
end