compute-median

Computes the median of an array.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
compute-median
802.0.07 years ago8 years agoMinified + gzip package size for compute-median in KB

Readme

Median
!NPM versionnpm-imagenpm-url !Build Statustravis-imagetravis-url !Coverage Statuscoveralls-imagecoveralls-url !Dependenciesdependencies-imagedependencies-url
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 );
// returns 3.5

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,
});
// returns 3.5

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
});
// returns 3.5

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.