Ruby2.0以降はArray#bsearchが、2.3以降はArray#bsearch_indexが標準でありますが、どうしても1.9を使わなければいけないことがあったので、自前で実装しました。 仕様としてはRuby2.0のArray#bsearchのfind-minimumモードと同じにしてあります。 class Array def bsearch(&block) index = bsearch_index(&block) index.nil? ? nil : self[index] end def bsearch_index(&block) return nil if length == 0 bsearch_impl(self, &block) end def bsearch_impl(ary, &block) if ary.length == 1 return block.call
