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