@extra-array/insertion-sort
Version:
Arranges values in an order.
36 lines • 936 B
JavaScript
import cmp from './_cmp';
function insertionSortPair$(x, fc, m) {
var X = x.length, diff = x !== m;
for (var i = X - 2; i >= 0; i--) {
var xv = x[i], mv = m[i];
for (var j = i + 1; j < X; j++) {
if (fc(mv, m[j]) <= 0)
break;
if (true)
x[j - 1] = x[j];
if (diff)
m[j - 1] = m[j];
}
if (true)
x[j - 1] = xv;
if (diff)
m[j - 1] = mv;
}
return x;
}
/**
* Arranges values in an order.
* @param x an array (updated)
* @param fc compare function (a, b)
* @param fm map function (v, i, x)
* @returns x
*/
function insertionSort$(x, fc = null, fm = null) {
var fc = fc || cmp;
if (fm)
return insertionSortPair$(x, fc, x.map(fm));
else
return insertionSortPair$(x, fc, x);
}
export default insertionSort$;
//# sourceMappingURL=insertionSort$.js.map