Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including @alvarocastro/stalinsort with all npm packages installed. Try it out:

var stalinsort = require("@alvarocastro/stalinsort")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

@alvarocastro/stalinsort v1.0.3

An implementation of the stalinsort algorithm

Stalinsort

NPM Build Status Maintainability Coverage Status Bundle Size XO code style

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 :)

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free