September 2017 Update

This commit is contained in:
Ingy döt Net 2017-09-23 10:01:46 +02:00
parent bba7bfd280
commit ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions

View file

@ -1,29 +1,27 @@
func merge(left, right) {
var result = [];
while (!left.is_empty && !right.is_empty) {
result.append([right,left][left.first <= right.first].shift);
};
result + 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 len = array.len
len < 2 && return array
 
var mid = (len/2 -> int);
var left = array.ft(0, mid-1);
var right = array.ft(mid);
var (left, right) = array.part(len//2)
 
left = __FUNC__(left);
right = __FUNC__(right);
left = __FUNC__(left)
right = __FUNC__(right)
 
merge(left, right);
merge(left, right)
}
 
# Numeric sort
var nums = (0..7 -> shuffle);
say mergesort(nums);
var nums = rand(1..100, 10)
say mergesort(nums)
 
# String sort
var strings = ('a'..'e' -> shuffle);
say mergesort(strings);
var strings = rand('a'..'z', 10)
say mergesort(strings)