Okay, so I'm trying to implement your radix sort, and something's going wrong.
When I turn on warnings (I'm using Perl v5.6.0) I get:
Multidimensional syntax $table[substr $_, $i, 1] not supported at ./sort3.pl line 31.
and when I turn on strict:
Can't use an undefined value as an ARRAY reference at ./sort3.pl line 30.
The program runs okay when I use a regular sort, but when I switch
the comment lines to try to run the radix, then I get those warnings and strict errors.
Turning off warnings and strict results in the original list unchanged.
Is this a situation where I need a newer version of Perl, or am I
doing something wrong?
my $max=10;
my $size=10;
my @result;
my @array=Generate();
#@result=(sort radix_sort @array);
@result=(sort @array); # Move commenting line up to run radix
for (my $i=0; $i<=$#array; $i++) {
print "$array[$i] $result[$i]\n";
}
sub Generate {
my @array;
for (my $i=0; $i<$max; $i++) {
for (my $j=0; $j<$size; $j++) {
my $char=(chr(rand(26)+97));
$array[$i].=$char;
}
}
return (@array);
}
sub radix_sort {
my $a = shift;
for my $i (reverse(0 .. @$a-1)) {
my @table;
for (@$a) {
push @{ $table[substr $_, $i, 1] }, $_;
}
@$a = map @$_, @table;
}
}
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]