Keep It Simple, Stupid PerlMonks

### Re^2: Calculating statistical median

by jimbojones (Friar)
 on Jul 13, 2005 at 15:35 UTC ( #474589=note: print w/replies, xml ) Need Help??

in reply to Re: Calculating statistical median

Hi.

Is there a special reason for the array reference? Versus this?
```sub mean {
my \$result;
foreach (@_) { \$result += \$_ }
return \$result / @_;
}

my @points = qw(1 2 3 4);

print mean @points;

Replies are listed 'Best First'.
Re^3: Calculating statistical median
by dirac (Beadle) on Jul 14, 2005 at 07:07 UTC
Copying an array or hash into @_ takes time. Passing arrays and hashes by reference is straightforward.
See Benchmark
If you want median:
```sub median { \$_[0]->[ @{\$_[0]} / 2 ] }

my @points = 0..100;

print median(\@points), "\n";

It should sort the array before calculating median this way. Besides that it does not handle the array with even elements correctly.

This calculates median only if @points is already truly ordered.
This sample has a bug: if input array is not sorted, the result is incorrect.
```\$ cat median.pl
sub median { \$_[0]->[ @{\$_[0]} / 2 ] }
my @sample=(9, 1, 2, 3, 4, 8, 7, 6, 5);
my @sorted;
@sorted=sort @sample;
print median(\@sample),"\n";
print median(\@sorted),"\n";
\$ perl median.pl
4
5
\$
Should be
```5
5
Hi

Thanks. Didn't know about the speed issue.

- j

Create A New User
Node Status?
node history
Node Type: note [id://474589]
help
Chatterbox?
and the monastery is silent...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (5)
As of 2018-05-21 17:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
World peace can best be achieved by:

Results (159 votes). Check out past polls.

Notices?