Median
Computes the median of an array.
Installation
$ npm install compute-median
For use in the browser, use browserify.
Usage
var median = require( 'compute-median' );
median( arr[, options] )
Computes the median of an array
. For unsorted primitive number arrays
,
var unsorted = [ 5, 3, 2, 4 ];
var m1 = median( unsorted );
The function accepts two options
:
sorted
: boolean
flag indicating if the input array
is sorted in ascending order. Default: false
.accessor
: accessor function
for accessing values in object arrays
.
If the input array
is already sorted in ascending order, set the sorted
option to true
.
var sorted = [ 2, 3, 4, 5 ];
var m2 = median( sorted, {
'sorted': true,
});
For object arrays
, provide an accessor function
for accessing numeric array
values
var data = [
[1,5],
[3,3],
[4,2],
[5,4],
];
function getValue( d ) {
return d[ 1 ];
}
var m3 = median( data, {
'sorted': false,
'accessor': getValue
});
Note: if provided an empty array
, the function returns null
.
Examples
var median = require( 'compute-median' );
var data = new Array( 1001 );
for ( var i = 0; i < data.length; i++ ) {
data[ i ] = Math.round( Math.random() * 100 );
}
console.log( median( data ) );
To run the example code from the top-level application directory,
$ node ./examples/index.js
Notes
For an input array
of length N
,
- if provided a sorted (in ascending order) numeric
array
, the function is O(1)
. - if provided a sorted object
array
, the function is O(N)
. - if provided an unsorted numeric
array
, the function is O( N log(N) )
. - if provided an unsorted object
array
, the function is O( N + N log(N) )
.
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
License
MIT license.
Copyright
Copyright © 2014-2015. Athan Reines.