微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐