Sha256: f8772ea6c3ec1254d95e8297d9fec3c73345989f71553a54a8a69f2e110be984
Contents?: true
Size: 760 Bytes
Versions: 70
Compression:
Stored size: 760 Bytes
Contents
unless Array.method_defined? :bsearch class Array def bsearch return to_enum(__method__) unless block_given? from = 0 to = size - 1 satisfied = nil while from <= to 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 fail 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 end end
Version data entries
70 entries across 70 versions & 5 rubygems