Cocktail Sort (bidirectional bubble sort) extends bubble sort by operating in two directions. It improves on bubble sort by more quickly moving items to the beginning of the list.
npm install cocktailsort
# OR with yarn
yarn add cocktailsort
import sort from 'cocktailsort'
// ascending
sort([4, 2, 0, -1, 9]) // [-1, 0, 2, 4, 9]
// descending
sort([4, 2, 0, -1, 9], (a, b) => b - a) // [9, 5, 2, 0, -1]
// array of objects as input
sort([{ i: 10 }, { i: 2 }, { i: 9 }], (a, b) => a.i - b.i) // [{i: 2}, {i: 9}, {i: 10}]