用排序数字值作为数组的索引,其值来表示此数排序后的位置,perl代码如下:
#!perl -w
use strict;
sub ProduceSortNumRecord
{
my @SortNumRecord;
my $EachNum;
my $Index;
foreach $EachNum (@_)
{
if (defined($SortNumRecord[$EachNum]))
{
$SortNumRecord[$EachNum]++;
}
else
{
$SortNumRecord[$EachNum] = 1;
}
}
foreach $Index (1..$#SortNumRecord)
{
$SortNumRecord[$Index] += (defined($SortNumRecord[$Index-1])?$SortNumRecord[$Index-1]:0);
}
return /@SortNumRecord;
}
sub SortAtSpace
{
my @SortResult;
my $AsortNum;
# @_ contain all nums to sort;
my $RefSortNumRecord = &ProduceSortNumRecord(@_);
foreach $AsortNum (@_)
{
$SortResult[$RefSortNumRecord->[$AsortNum]-1] = $AsortNum;
$RefSortNumRecord->[$AsortNum]--;
}
return @SortResult;
}
sub PrintArray
{
print "Array Num is ".scalar(@_)."/n";
print "Array Value is:/n(";
foreach (0..$#_-1)
{
print $_[$_].",";
}
print $_[$#_].")";
}
my @SortNum = (23,45,12,3,6,7,9,10);print "Num to Sort:",@SortNum,"/n";&PrintArray(&SortAtSpace(@SortNum));
总结以上是内存溢出为你收集整理的最快的排序方法,以空间耗费为代价!!全部内容,希望文章能够帮你解决最快的排序方法,以空间耗费为代价!!所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)