在perl中查找下一个更高数字的最佳算法

TTa*_*Ta4 2 algorithm perl

我试图找到类似于我的问题的先前线程,但没有找到.

考虑一个获取数组和数字的函数.我想找到下一个更高的数字.

例:

输入: arr = {2,5,3,8,15,10}, number = 6

输出:8因为6 < 8.

在Perl中执行此操作的最佳算法是什么?

编辑:我尝试了什么:

my @arr = (2,5,3,8,15,10);
my $number = 6;
my $next_largest = 10000000;
foreach my $val (@arr) {
    if($number < $val && $next_largest > $val) {
        $next_largest = $val;
    }
}

if(defined($next_largest)) {
    print $next_largest."\n";
}
Run Code Online (Sandbox Code Playgroud)

有没有办法没有声明$next_largest = 10000000?它看起来不太好,并且它不处理高于此值的值的情况.此外,如果我尝试$next_lergest没有数字,它不起作用.

我认为最好 - 最好看(时间并不重要).

yst*_*sth 7

use List::Util 'min';
my @arr = (2,5,3,8,15,10);
my $number = 6;
my $next_largest = min grep $_ > $number, @arr;

if(defined($next_largest)) {
    print $next_largest."\n";
}
Run Code Online (Sandbox Code Playgroud)