View difference between Paste ID: 8ZHtrv57 and CmqV2yPe
SHOW: | | - or go back to the newest paste.
1
#!/usr/bin/env perl
2
3
use 5.014;
4
use warnings;
5
use strict;
6
use autodie;
7
8
my @unsorted = map { int(rand(100)) } 1..20;
9
say join ' ', @unsorted;
10
11
sub mergesort {
12
	my @items = @_;
13
	if (@items <= 1) { @items }
14
	else { merge([mergesort(splice @items, 0, ($#items+1)/2)],[mergesort(@items)]) }
15
}
16
17
sub merge {
18
	my @l1 = @{shift @_};
19
	my @l2 = @{shift @_};
20
	if (!@l2) { @l1 }
21
	elsif (!@l1) { @l2 }
22
	else {
23
		my ($a,$b) = (shift @l1,shift @l2);
24
		$a < $b ? ($a,merge([@l1],[$b,@l2])) : ($b,merge([$a,@l1],[@l2]));
25
	}
26
}
27
28
my @sorted = mergesort(@unsorted);
29
say join ' ', @sorted;