首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

[d]求perl 中位数函数解决方法

2013-01-23 
[d]求perl 中位数函数本帖最后由 fibbery 于 2012-09-29 10:03:49 编辑RT输入@list数组,输出$midths.-----

[d]求perl 中位数函数
本帖最后由 fibbery 于 2012-09-29 10:03:49 编辑 RT

输入@list数组,输出$mid

ths.


-------------------
Double行动:
原帖分数:20
帖子加分:20
[解决办法]

#! /usr/bin/perl -w
use strict;
use 5.010;

sub mid
{
my @list = sort @_;
my $count = @list;
if( $count == 0 )
{
return 0;
die "怎么办?";
}
return $list[($count-1)/2];
}

say mid( 3, 9, 8 );
say mid( 3, 7, -5, -11 );
say mid( -5 );
say mid();

[解决办法]
#! /usr/bin/perl -w
use strict;

sub mid
{
    my @list = sort @_;
    my $count = @list;
    if( $count == 0 )
    {
        return undef;
     }    
    return $list[int(($count-1)/2)];
}


[解决办法]

sub mid{
my @list = sort{$a<=>$b} @_;
my $count = @list;
if( $count == 0 )
{
return undef;
}   
if(($count%2)==1){
return $list[int(($count-1)/2)];
}
elsif(($count%2)==0){
return ($list[int(($count-1)/2)]+$list[int(($count)/2)])/2;
}
}

楼上二位答案甚好,但有两处需要注意:
1、sort排序是按ascii排序的,不是按照数字大小排序的。
2、中位数的定义:http://baike.baidu.com/view/170892.htm 如果数组个数是偶数,应该取中间两个的平均值。

供参考。谢谢!

热点排行