Hi,

I am trying to benchmark these two sorting algorithms.
However running the script below:

$ perl thiscode.pl

gives:
Can't use an undefined value as an ARRAY reference at radix.pl line 23.

However the code execute smoothly with the normal usage.
Only when I use 'cmpthese' the problem occur.

Any idea?

Thanks so much beforehand.
--
Edward WIJAYA
Singapore

__BEGIN__
#!/usr/bin/perl -w
use strict;
use Benchmark 'cmpthese';

my @array = qw(flow loop pool Wolf root sort tour);

#The script runs ok if I remove this 'cmpthese' snippet
cmpthese (-5, {rad   => "radix_sort([EMAIL PROTECTED])",
               nsort => "basic_sort([EMAIL PROTECTED])"
              }
         );

my @thear = basic_sort([EMAIL PROTECTED]);
print "@thear\n";


sub basic_sort {

my $array = shift;
my @ar2;
@ar2 = sort @{$array}; #This is line 23, but seems that this is not the problem
return @ar2;
}



sub radix_sort { my $array = shift;

    my $from = $array;
    my $to;

    # All lengths expected equal.
    for ( my $i = length ($array->[ 0 ]) - 1; $i >= 0; $i-- ) {
        # A new sorting bin.
        $to = [ ];
        foreach my $card ( @$from ) {
            # Stability is essential, so we use push().
            push @{ $to->[ ord( substr $card, $i ) ] }, $card;
        }

        # Concatenate the bins.

        $from = [ map { @{ $_ || [ ] } } @$to ];
    }

    # Now copy the elements back into the original array.

    @$array = @$from;
}





--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to