September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue