https://github.com/alvarocastro/stalinsort
An implementation of the meme stalinsort in JavaScript.
https://github.com/alvarocastro/stalinsort
algorithm javascript meme sort sorting stalin stalinsort
Last synced: 9 months ago
JSON representation
An implementation of the meme stalinsort in JavaScript.
- Host: GitHub
- URL: https://github.com/alvarocastro/stalinsort
- Owner: alvarocastro
- License: mit
- Created: 2020-01-25T00:31:52.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-25T08:07:16.000Z (almost 3 years ago)
- Last Synced: 2025-03-17T19:58:07.009Z (9 months ago)
- Topics: algorithm, javascript, meme, sort, sorting, stalin, stalinsort
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/@alvarocastro/stalinsort
- Size: 1.29 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Stalinsort
[](https://www.npmjs.com/package/@alvarocastro/stalinsort)
[](https://github.com/alvarocastro/stalinsort/actions?query=workflow%3Abuild)
[](https://codeclimate.com/github/alvarocastro/stalinsort/maintainability)
[](https://coveralls.io/github/alvarocastro/stalinsort?branch=master)
[](https://bundlephobia.com/result?p=@alvarocastro/stalinsort)
[](https://github.com/xojs/xo)
[](https://github.com/semantic-release/semantic-release)
Yet another implementation of stalinsort in JavaScript. Inspired by [this post](https://www.reddit.com/r/ProgrammerHumor/comments/9s9kgn/nononsense_sorting_algorithm/) in [r/ProgrammerHumor](https://www.reddit.com/r/ProgrammerHumor).
- [Install](#install)
- [Usage](#usage)
- [Performance](#performance)
- [More examples](#more-examples)
- [Contributing](#contributing)
- [Support](#support)
## Install
```bash
npm install @alvarocastro/stalinsort
```
## Usage
```js
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](utils.js#L2)
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](utils.js).
## More examples
### Reverse order
```js
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
```js
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` beforehand to ensure everything is ok.
## Support
If you use this package please consider starring it :)