const qs = ([x, ...xs]) => (
x !== undefined ?
[
...qs(xs.filter(s => s <= x)),
x,
...qs(xs.filter(b => b > x))
]
: []
);
const qs2 = (xs) => (
xs.length > 0 ?
xs[0] !== undefined ?
[
...qs2(xs.slice(1).filter(s => s <= xs[0])),
xs[0],
...qs2(xs.slice(1).filter(b => b > xs[0]))
]
: qs2(xs.slice(1))
: []
);
const arr = Array.from({length: 100}, () => Math.round(Math.random() * 100));
const sorted_array = qs(arr);
const sorted_array = qs2(arr);
const sorted_array = [...arr].sort()