main
1class MergeSort
2 def sort(items)
3 return items if items.size <= 1
4 pivot = items.size/2
5 left, right = items[0...pivot], items[pivot...items.size]
6 merge(sort(left), sort(right))
7 end
8
9 private
10
11 def merge(left, right)
12 result = []
13 result << ((left.first <=> right.first) == -1 ? left.shift : right.shift) until left.empty? || right.empty?
14 result + left + right
15 end
16end