1: sub sort_top {
2: my($top, $func, @arr) = @_;
3: my @top = sort $func @arr[0..$top-1];
4: for my $i ($top..$#arr) {
5: my $x = -1;
6: for (my $t = $#top; $t >= 0; $t--) {
7: local ($a, $b) = ($arr[$i], $top[$t]);
8: last if($func->() == 1);
9: $x = $t;
10: }
11: if($x != -1) {
12: splice(@top, $x, 0, $arr[$i]);
13: pop(@top);
14: }
15: }
16: return @top;
17: }
####
my @array = (8, 7, 1, 5, 4, 2, 10, 6, 9, 3);
##
##
my @top = (1, 7, 8);