View difference between Paste ID: CmqV2yPe and aNAeZA51
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-
	if (!@l2) { @l1; }
21+
	elsif (!@l1) { @l2 }
22-
	elsif (!@l1) { @l2; }
22+
23
		my ($a,$b) = (shift @l1,shift @l2);
24-
		my ($a,$b) = (shift @l1, shift @l2);
24+
		$a < $b ? ($a,merge([@l1],[$b,@l2])) : ($b,merge([$a,@l1],[@l2]));
25-
		$a < $b ? ($a, merge([@l1], [$b,@l2])) : ($b, merge([$a,@l1], [@l2]));
25+
26
}
27
28
my @sorted = mergesort(@unsorted);
29
say join ' ', @sorted;