Merge sort
func merge(left, right) {
var result = []
while (left && right) {
result << [right,left].min_by{.first}.shift
}
result + left + right
}
func mergesort(array) {
var len = array.len
len < 2 && return array
var (left, right) = array.part(len//2)
left = __FUNC__(left)
right = __FUNC__(right)
merge(left, right)
}
# Numeric sort
var nums = rand(1..100, 10)
say mergesort(nums)
# String sort
var strings = rand('a'..'z', 10)
say mergesort(strings)Output:
Last updated
Was this helpful?