leeoniya / sort-ids

Calculate ids corresponding to sorting an input array

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sort-ids unstable Build Status

Sort input array, return sorted ids of the array items, keeping the initial array unchanged.

Useful to perform linked sorting of multiple arrays, where linked array[s] should be sorted the same way as the primary one.

npm install sort-ids

var sortIds = require('sort-ids')
var reorder = require('array-rearrange')

var rates = [.12, .47, .52, .97, ...sourceNumbers]
var names = ['John', 'Alexa', 'Jimmy', 'Kate', ...linkedItems]

var ids = sortIds(rates)

var sortedRates = reorder(rates, ids)
var sortedNames = reorder(names, ids)

ids = sortIds(array, ids?, precise=true)

Calculate ids corresponding to sorted input array. The input array isn't changed. Optionally pass input ids array to store some initial order of ids. precise flag makes sure no missorts took place and resolves them, if any. Disabling that can save ~30ms for 1e6 items input arrays.

See also array-rearrange for reordering input array based on a list of ids.

Motivation

This package is >= 6 times faster compared to sorting function. That is achieved by packing input value - id pairs into a single float64 value and performing native sort on that Float64Array, then unpacking the ids back.

Acknowledgement

The idea was proposed by Robert Monfera for snap-points-2d and eventually implemented. But there may be other applications, like sorting colors etc.

License

(c) 2018 Dmitry Yv. MIT License

About

Calculate ids corresponding to sorting an input array

License:MIT License


Languages

Language:JavaScript 100.0%