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);