+ -
当前位置:首页 → 问答吧 → 用Perl写了一个 计数排序,不知道这样写有没有不对的地方,另外,Perl子程序每次调用的时候都会创建一个数组,有必要在子程序结束前清空吗?

用Perl写了一个 计数排序,不知道这样写有没有不对的地方,另外,Perl子程序每次调用的时候都会创建一个数组,有必要在子程序结束前清空吗?

时间:2011-04-27

来源:互联网

Perl code
#!/usr/bin/perl -w
use strict;
use 5.010;
sub counting_sort(\@){
    my $a = shift @_;
    my @arr = @$a;
    my @count;
    my @result;
    for(0..$#arr){
        $count[$arr[$_]] ++;  #count[i] 包含等于i的元素个数
    }
    for(1..$#count){
        $count[$_] += $count[$_-1] ; #count[i] 包含小于或等于i的元素个数
    }
    for(0..$#arr){
        $result[$count[$arr[$_]]-1] = $arr[$_];
        $count[$arr[$_]] -- ;
    }
    return @result;
}
my @array = qw/2 5 3 0 2 3 0 3/;
my @temp = counting_sort(@array);
say "@temp";# print  0 0 2 2 3 3 3 5

用Perl写了一个 计数排序,不知道这样写有没有不对的地方?
另外,Perl子程序每次调用的时候都会创建一个数组,有必要在子程序结束前清空吗?

作者: cliffbaby   发布时间: 2011-04-27

写的对不对你自己测试下不就知道了?

作者: iambic   发布时间: 2011-04-27