Sha256: 5b25cd44ba8c3f9638b841ac28a0002f77bc2dda4aa54acca908553108cf915f
Contents?: true
Size: 695 Bytes
Versions: 2
Compression:
Stored size: 695 Bytes
Contents
class Array def bsearch return to_enum __method__ unless block_given? from = 0 to = size - 1 satisfied = nil while from <= to do midpoint = (from + to).div(2) result = yield(cur = self[midpoint]) case result when Numeric return cur if result == 0 result = result < 0 when true satisfied = cur when nil, false # nothing to do else raise TypeError, "wrong argument type #{result.class} (must be numeric, true, false or nil)" end if result to = midpoint - 1 else from = midpoint + 1 end end satisfied end unless method_defined? :bsearch end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
backports-2.8.1 | lib/backports/2.0.0/array.rb |
backports-2.8.0 | lib/backports/2.0.0/array.rb |