2

之前,我将元素条目定义为只是 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 堆

4

0 回答 0