之前,我将元素条目定义为只是 Array in,Heap::Simple
因为我不需要辅助排序。
在实现了二次排序和定义元素以将数组引用插入到我创建的堆中的函数之后,我的插入运行时间增加了(很多!)。这在Heap::Simple
下面的文档中有介绍Any
但是我很难理解使用Any
元素类型的缺点。我会创建额外的数组引用吗?我应该key_insert
用来减少运行时间吗?
这是目前的代码:
my $heap = Heap::Simple->new( order => \&by_num_or_str,
elements => [Function => \&first_two_slots]
);
sub by_num_or_str
{
my ( $a, $b ) = @_;
my $result =
$b->[0] <=> $a->[0] #0-th element is a number
||
$a->[1] cmp $b->[1]; #1-st element is a string
return $result == -1;
}
sub first_two_slots
{
my $array_ref = shift;
return [ @$array_ref[0,1] ];
}
上下文:将数组引用插入 Perl 堆