- Notifications
You must be signed in to change notification settings - Fork5
rangedPartialSort$
Subhajit Sahu edited this pageMay 3, 2023 ·1 revision
Partially arrange a range of values in order!
Alternatives:rangedPartialSort,rangedPartialSort$.
Similar:sort,rangedSort,partialSort,rangedPartialSort.
functionrangedPartialSort$(x,i,I,n,fc,fm,fs)// x: an array (updated!)// i: begin index// I: end index (exclusive)// n: minimum number of values to sort// fc: compare function (a, b)// fm: map function (v, i, x)// fs: swap function (x, i, j)
constxarray=require('extra-array');// Sort a range of values (index 0 to 3)!varx=[4,-3,1,-2];xarray.rangedPartialSort$(x,0,3,3);// → [ -3, 1, 4, -2 ] (compares numbers, x is updated!)// Partially sort a range of values (index 0 to 3)!// First 2 values are guaranteed to be sorted!varx=[4,-3,1,-2];xarray.rangedPartialSort$(x,0,3,2);// → [ -3, 1, 4, -2 ] (x is updated!)// Partially sort using absolute values!varx=[4,-3,1,-2];xarray.rangedPartialSort$(x,0,3,2,null,v=>Math.abs(v));// → [ 1, -3, 4, -2 ]// Partially sort two arrays together!varx=['b','a','d','c'];vary=[2,1,4,3];xarray.rangedPartialSort$(x,0,3,2,null,null,(x,i,j)=>{xarray.swap$(x,i,j);xarray.swap$(y,i,j);});x;// → [ 'a', 'b', 'c', 'd' ]y;// → [ 1, 2, 3, 4 ]