Method: Array#bsearch_last

Defined in:
lib/array_bsearch.rb

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

This method searches the LAST occurrence which satisfies a condition given by a block in binary fashion and return the index of the last occurrence. Return nil if not found.



62
63
64
65
66
67
68
69
70
71
# File 'lib/array_bsearch.rb', line 62

def bsearch_last (range = 0 ... self.length, &block)
  # `- 1' for canceling `lower + 1' in bsearch_upper_boundary.
  boundary = bsearch_upper_boundary(range, &block) - 1

  if (boundary <= -1 || yield(self[boundary]) != 0)
    return nil
  else
    return boundary
  end
end