...
) to clone the original array, arr
.length
of the array is less than 2
, return the cloned array.Math.floor()
to calculate the index of the pivot element.Array.prototype.reduce()
and Array.prototype.push()
to split the array into two subarrays. The first one contains elements smaller than or equal to pivot
and the second on elements greather than it. Destructure the result into two arrays.quickSort()
on the created subarrays.const quickSort = arr => { const a = [...arr]; if (a.length < 2) return a; const pivotIndex = Math.floor(arr.length / 2); const pivot = a[pivotIndex]; const [lo, hi] = a.reduce( (acc, val, i) => { if (val < pivot || (val === pivot && i != pivotIndex)) { acc[0].push(val); } else if (val > pivot) { acc[1].push(val); } return acc; }, [[], []] ); return [...quickSort(lo), pivot, ...quickSort(hi)]; };
quickSort([1, 6, 1, 5, 3, 2, 1, 4]); // [1, 1, 1, 2, 3, 4, 5, 6]
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️