Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- use 5.014;
- use warnings;
- use strict;
- use autodie;
- my @unsorted = map { int(rand(100)) } 1..20;
- say join ' ', @unsorted;
- sub mergesort {
- my @items = @_;
- if (@items <= 1) { @items }
- else { merge([mergesort(splice @items, 0, ($#items+1)/2)],[mergesort(@items)]) }
- }
- sub merge {
- my @l1 = @{shift @_};
- my @l2 = @{shift @_};
- if (!@l2) { @l1 }
- elsif (!@l1) { @l2 }
- else {
- my ($a,$b) = (shift @l1,shift @l2);
- $a < $b ? ($a,merge([@l1],[$b,@l2])) : ($b,merge([$a,@l1],[@l2]));
- }
- }
- my @sorted = mergesort(@unsorted);
- say join ' ', @sorted;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement