如何在Perl中的整数数组中找到最大值和最小值?

时间:2012-05-22 11:33:52

标签: perl

我有一个数组 33,32,8,100 的数组。

如何在此数组中找到最大值和最小值?

我是否需要包含任何特殊库?

12 个答案:

答案 0 :(得分:29)

List::Utilminmax没问题,

use List::Util qw( min max );
my $min = min @numbers;
my $max = max @numbers;

但是当你需要min和max时,List::MoreUtilsminmax更有效率(因为它的比较较少)。

use List::MoreUtils qw( minmax );
my ($min, $max) = minmax @numbers;

List :: Util是核心的一部分,但List :: MoreUtils不是。

答案 1 :(得分:20)

您可以使用List::Util轻松完成此操作,例如

use List::Util qw(min max);
my @arr = (33, 32, 8, 100);
print min(@arr)," ", max(@arr), "\n";

答案 2 :(得分:18)

没有模块:

#!/usr/bin/perl
use strict;
use warnings;
my @array = sort { $a <=> $b } qw(33 32 8 100);
print "min: $array[0]\n";
print "max: $array[-1]\n";

答案 3 :(得分:10)

提供的解决方案很好,但是如果你想自己实现它,那就非常简单了:

use strict;
use warnings;

my @array = (33, 32, 8, 100);
my ($min, $max);

for (@array) {
    $min = $_ if !$min || $_ < $min;
    $max = $_ if !$max || $_ > $max
};

print "min: $min\n";
print "max: $max\n";

答案 4 :(得分:2)

您可以使用map来执行此操作而无需库:

x*********s@x**s.com

答案 5 :(得分:1)

您应该使用自v5.7.3以来随Perl发行版一起发布的List::Util,因此可能不需要安装。

use strict;
use warnings;

use feature 'say';

use List::Util qw/ max min /;

my @data = (33, 32, 8, 100);

say min @data;
say max @data;

<强>输出

8
100

答案 6 :(得分:1)

当然,如果你同时想要一个列表的最大值和最小值,那么同时获取它们会更有效率;它只需要每2项数据执行3次比较,而不是4次。如果数据集足够大,这可能很重要。

List::Util不提供minmax功能但List::MoreUtils提供功能。

use strict;
use warnings;
use feature qw( say );

use List::MoreUtils qw( minmax );

my ( $min, $max ) = minmax @data;

say $min;
say $max;

答案 7 :(得分:1)

对于数字:

    my ($min,$max) = (sort {$a <=> $b} @array)[0,-1];

对于字符串:

    my ($min,$max) = (sort {$a cmp $b} @array)[0,-1];

答案 8 :(得分:0)

我认为List::Util正是您所寻找的。

答案 9 :(得分:0)

您可以使用Statistics::Lite来计算最小值,最大值等

答案 10 :(得分:0)

使用建议您熟悉的List::Util module,就像List::MoreUtils一样:

D:\ :: perl -MList::Util=max -lwe "print max 324, 43, 53, 3532, 43"
3532

D:\ :: perl -MList::Util=min -lwe "print min 324, 43, 53, 3532, 43"
43

答案 11 :(得分:0)

List::Util具有“max”和“min”函数,您可以使用这些函数直接查找给定数字列表的最大值和最小值。检查您是否可以使用它。您也可以对数组进行排序,然后确定最高和最低数字