New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

@alvarocastro/heapsort

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@alvarocastro/heapsort

An implementation of the heapsort algorithm

latest
Source
npmnpm
Version
1.0.6
Version published
Maintainers
1
Created
Source

Heapsort

NPM Build status Maintainability status Coverage status Bundle size Code style: XO Release: Semantic

Yet another implementation of heapsort in JavaScript aimed to be flexible, lightweight and fast.

Install

npm install @alvarocastro/heapsort

Usage

const sort = require('@alvarocastro/heapsort');

const elements = [8, -1, 3, 0.5, 200];
sort(elements);
// => [-1, 0.5, 3, 8, 200]

sort(elements[, compare])

Returns a new sorted array based on the compare function criteria.

elements

Type: Array

List of elements to sort.

compare

Type: Function
Default: comparatorAscending

The function to use to compare two elements and find their sorting order. The expected return of the function is:

  • -1 to sort the element to the left.
  • 1 to sort the element to the right.
  • 0 when the elements are the same, no sorting is made.

A descending function is also provided in utils.js.

Performance

Want to test the performance?

Included is the command npm run performance that will run a battery of profiled tests for your needs.

Here is an example of the output (YMMV depending your hardware)

Sorting random numbers generated in the range [-1,1]:
#1 - 10 numbers
> Heapsort: 0ms
> Array.sort: 1ms
#2 - 100 numbers
> Heapsort: 2ms
> Array.sort: 1ms
#3 - 1000 numbers
> Heapsort: 8ms
> Array.sort: 1ms
#4 - 10000 numbers
> Heapsort: 16ms
> Array.sort: 23ms
#5 - 100000 numbers
> Heapsort: 45ms
> Array.sort: 394ms
#6 - 1000000 numbers
> Heapsort: 709ms
> Array.sort: 6260ms

More examples

Reverse order

const sort = require('@alvarocastro/heapsort');
const {comparatorDescending} = require('@alvarocastro/heapsort/utils');

const elements = [8, -1, 3, 0.5, 200];
sort(elements, comparatorDescending);
// => [200, 8, 3, 0.5, -1]

Custom elements

const sort = require('@alvarocastro/heapsort');

const elements = [
	{name: 'Sarah Connor', firstAppearance: 'The Terminator'},
	{name: 'T-800', firstAppearance: 'The Terminator'},
	{name: 'Kyle Reese', firstAppearance: 'The Terminator'},
	{name: 'John Connor', firstAppearance: 'Terminator 2: Judgement Day'},
	{name: 'T-1000', firstAppearance: 'Terminator 2: Judgement Day'}
];
const comparator = function (a, b) {
	if (a.name < b.name) {
		return -1;
	} else if (a.name > b.name) {
		return 1;
	}
	return 0;
};
sort(elements, comparator);
// => [
// {name: 'John Connor', firstAppearance: 'Terminator 2: Judgement Day'},
// {name: 'Kyle Reese', firstAppearance: 'The Terminator'},
// {name: 'Sarah Connor', firstAppearance: 'The Terminator'},
// {name: 'T-800', firstAppearance: 'The Terminator'},
// {name: 'T-1000', firstAppearance: 'Terminator 2: Judgement Day'}
// ]

Contributing

Contributions are always welcome! Please run npm test beforehand to ensure everything is ok.

Support

If you use this package please consider starring it :)

Keywords

heapsort

FAQs

Package last updated on 17 Jan 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts