加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

最快的排序方法,以空间耗费为代价!!

发布时间:2020-12-16 00:43:15 所属栏目:大数据 来源:网络整理
导读:用排序数字值作为数组的索引,其值来表示此数排序后的位置,perl代码如下: ? #!perl -w use strict; sub ProduceSortNumRecord { ? ?my @SortNumRecord; ?my $EachNum; ?my $Index; ?foreach $EachNum (@_) ?{ ?? ??if (defined($SortNumRecord[$EachNum]))

用排序数字值作为数组的索引,其值来表示此数排序后的位置,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));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读