mergesort
マージソート童貞卒業した。
def mergesort(array) array.size <= 1 ? array : merge(mergesort(array[0...array.size/2]), mergesort(array[array.size/2...array.size])) end def merge(left, right) array = [] array.push(left.first <= right.first ? left.shift : right.shift) while !left.empty? && !right.empty? array + (!left.empty? ? left : right) end p mergesort Array.new(10) {|i| rand(100) }
「Rubyならmerge3行mergesort1行で書けるよ」って言われたので書いたんだけどあんまりRubyっぽくない。