#!/usr/bin/ruby
# Merge sort algorithm
func merge(left, right) {
var array = [];
var nL = left.len;
var nR = right.len;
var(i=0, j=0);
while (i<nL && j<nR) {
array << (left[i] <= right[j] ? left[i++] : right[j++]);
}
array += left.ft(i);
array += right.ft(j);
return array;
}
func merge_sort(array { .len < 2 }) { array }
func merge_sort(array) {
var (left, right) = @|array/2
__FUNC__(left)
__FUNC__(right)
array[] = merge(left, right)...
}
var arr = [3,4,7,6,2,5,1,0].shuffle
merge_sort(arr)
assert_eq(arr, arr.sort)
say "** Test passed!"