> You can fing max and min value as,
> 
> my @ar = (1,2,3,4,58,9,2,1);
> my $max = (sort { $b <=> $a } @ar)[0];
> my $min = (sort { $a <=> $b } @ar)[0];


If your arrays could be very large, it's a waste of cycles to sort the list
then throw most of that effort away.  You could do:

**************************************
my @ar = (1,2,3,4,58,9,2,1);
my ($max, $min) = (-1e308, 1e308);
foreach (@ar) {
    $max = $_ if $_ > $max;
    $min = $_ if $_ < $min;
}
**************************************

Which only has to check each item once, instead of many times like the sort
algorithms do.  Some smart perl person may know a better way (I know about
List::Util, but I avoid modules since we have some machines here with very
old versions of perl).

Also, I imagine the above code could be re-written as:

**************************************
my @ar = (1,2,3,4,58,9,2,1);
my ($min,$max) = (sort { $a <=> $b } @ar)[0,-1];
**************************************

.. to only do the sort once.

- Bryan




-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to