@alvarocastro/stalinsort
v1.0.3
Published
An implementation of the stalinsort algorithm
Downloads
22
Maintainers
Readme
Stalinsort
Yet another implementation of stalinsort in JavaScript. Inspired by this post in r/ProgrammerHumor.
Install
npm install @alvarocastro/stalinsort
Usage
const sort = require('@alvarocastro/stalinsort');
const elements = [1, 2, 5, 3, 5, 4, 7, 6];
sort(elements);
// => [1, 2, 5, 5, 7]
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.
More examples
Reverse order
const sort = require('@alvarocastro/stalinsort');
const {comparatorDescending} = require('@alvarocastro/stalinsort/utils');
const elements = [6, 7, 4, 5, 3, 5, 2, 1];
sort(elements, comparatorDescending);
// => [6, 4, 3, 2, 1]
Custom elements
const sort = require('@alvarocastro/stalinsort');
const elements = [
{name: 'Kyle Reese', firstAppearance: 'The Terminator'},
{name: 'Sarah Connor', firstAppearance: 'The Terminator'},
{name: 'John Connor', firstAppearance: 'Terminator 2: Judgement Day'},
{name: 'T-800', firstAppearance: 'The Terminator'},
{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: 'Kyle Reese', firstAppearance: 'The Terminator'},
// {name: 'Sarah Connor', firstAppearance: 'The Terminator'},
// {name: 'T-800', firstAppearance: 'The Terminator'},
// ]
Contributing
Contributions are always welcome! Please run npm test
before hand to ensure everything is ok.
Support
If you use this package please consider starring it :)