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