Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

compute-median

2.0.0 • Public • Published

Median

NPM version Build Status Coverage Status Dependencies

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.

Install

npm i compute-median

DownloadsWeekly Downloads

139

Version

2.0.0

License

none

Last publish

Collaborators

  • avatar
  • avatar