def merge(l, r)
case [l, r]
in [_, []]; l
in [[], _]; r
in [[x, *xs], [y, *ys]]
return [x, *merge(xs, r)] if x <= y
[y, *merge(l, ys)]
end
end
def msort(li)
case li
in []; []
in [x]; [x]
else
xs, ys = halve(li)
merge(msort(xs), msort(ys))
end
end
def halve(li)
xs = li.take(li.length / 2)
ys = li.drop(li.length / 2)
[xs, ys]
end
p merge([2,4,6],[1,3,5])
p msort([3,2,4,1,5])
To embed this project on your website, copy the following code and paste it into your website's HTML: