@aureooms/js-odd-even-mergesort
Version:
Batcher's odd-even mergesort algorithm for JavaScript
42 lines (34 loc) • 2.66 kB
Markdown
[@aureooms/js-odd-even-mergesort](https://aureooms.github.io/js-odd-even-mergesort)
==
<img src="https://cdn.rawgit.com/aureooms/js-odd-even-mergesort/master/media/sketch.svg" width="864">
Batcher's odd-even mergesort algorithm for JavaScript.
See [docs](https://aureooms.github.io/js-odd-even-mergesort).
Parent is [@aureooms/js-sort](https://github.com/aureooms/js-sort).
```js
import { whole } from '@aureooms/js-odd-even-mergesort' ;
import { list } from '@aureooms/js-itertools' ;
import { increasing } from '@aureooms/js-compare' ;
import { swap } from '@aureooms/js-array' ;
let modules = list( whole( 4 ) ) ;
modules ; // [ [ 0 , 1 ] , [ 2 , 3 ] , [ 0 , 2 ] , [ 1 , 3 ] , [ 1 , 2 ] ]
let a = [ 3 , 1 , 2 , 4 ] ;
for ( let [ i , j ] of modules ) if ( increasing( a[i] , a[j] ) > 0 ) swap( a , i , j ) ;
// 3 ----1------1----------- 1
// | |
// 1 ----3------|-3----2---- 2
// | | |
// 2 ------2----2-|----3---- 3
// | |
// 4 ------4------4--------- 4
a ; // [ 1 , 2 , 3 , 4 ]
```
[](https://raw.githubusercontent.com/aureooms/js-odd-even-mergesort/master/LICENSE)
[](https://www.npmjs.org/package/@aureooms/js-odd-even-mergesort)
[](https://travis-ci.org/aureooms/js-odd-even-mergesort)
[](https://coveralls.io/r/aureooms/js-odd-even-mergesort)
[](https://david-dm.org/aureooms/js-odd-even-mergesort#info=dependencies)
[](https://david-dm.org/aureooms/js-odd-even-mergesort#info=devDependencies)
[](https://codeclimate.com/github/aureooms/js-odd-even-mergesort)
[](https://www.npmjs.org/package/@aureooms/js-odd-even-mergesort)
[](https://github.com/aureooms/js-odd-even-mergesort/issues)
[](https://aureooms.github.io/js-odd-even-mergesort/source.html)