Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
19
Task/Quickselect-algorithm/Perl/quickselect-algorithm.pl
Normal file
19
Task/Quickselect-algorithm/Perl/quickselect-algorithm.pl
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
my @list = qw(9 8 7 6 5 0 1 2 3 4);
|
||||
print join ' ', map { qselect(\@list, $_) } 1 .. 10 and print "\n";
|
||||
|
||||
sub qselect
|
||||
{
|
||||
my ($list, $k) = @_;
|
||||
my $pivot = @$list[int rand @{ $list } - 1];
|
||||
my @left = grep { $_ < $pivot } @$list;
|
||||
my @right = grep { $_ > $pivot } @$list;
|
||||
if ($k <= @left)
|
||||
{
|
||||
return qselect(\@left, $k);
|
||||
}
|
||||
elsif ($k > @left + 1)
|
||||
{
|
||||
return qselect(\@right, $k - @left - 1);
|
||||
}
|
||||
else { $pivot }
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue