(编程题)100万个数据,数据值在0~65535之间,请用尽可能少的内存和最快的速度从小到大排序(10分)
#!perl -w
use strict;
my @ArrayData = (1,2,2,5,6,3,55,555,33,22,33,78,545,23,2,2,234,234,234,7,90,23,234,34,2,775,65);
&Sort(@ArrayData);
my @TempArray;
sub Sort()
{
my (@Array) = @_;
foreach my $no (@Array)
{
print "$no\n";
if (defined ($TempArray[$no]))
{
$TempArray[$no]++;
}
else
{
$TempArray[$no]=1;
}
}
}
my $Number = $#TempArray;
#print "$Number: @TempArray \n";
my $NumberIndex = 0;
for(;$NumberIndex<$Number;$NumberIndex++)
{
if (defined ($TempArray[$NumberIndex]))
{
print "$NumberIndex," x $TempArray[$NumberIndex];
}
}
if (defined ($TempArray[$NumberIndex]) && $TempArray[$NumberIndex]>1)
{
print "$NumberIndex," x ($TempArray[$NumberIndex]-1);
}
if (defined ($TempArray[$NumberIndex]))
{
print "$NumberIndex \n";
}