FLYING

/* TODO: 気の利いた説明を書く */

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っぽくない。