(编程题)100万个数据,数据值在0~65535之间,请用尽可能少的内存和最快的速度从小到大排序(10分)
#!perl -w
use strict;
my @ArrayData = (1,2,5,6,3,55,555,33,22,78,545,23,234,7,90,34,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"; }
总结以上是内存溢出为你收集整理的看见一道排序题,练练手。全部内容,希望文章能够帮你解决看见一道排序题,练练手。所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)