quick sort
const sort = (nums) => {
if (nums.length < 2) {
return nums;
}
const quickSort = (nums, start, end) => {
if (end <= start) return;
const baseIdx = partition(nums, start, end);
quickSort(nums, 0, baseIdx - 1);
quickSort(nums, baseIdx + 1, end);
return nums;
};
return quickSort(nums, 0, nums.length - 1);
};
function partition(nums, start, end) {
const randomIdx = Math.floor(Math.random() * (end - start + 1)) + start;
swap(nums, randomIdx, end);
let baseVal = nums[end];
let baseIdx = start;
for (let i = start; i < end; i++) {
if (nums[i] < baseVal) {
swap(nums, i, baseIdx);
baseIdx++;
}
}
swap(nums, baseIdx, end);
return baseIdx;
}
function swap(nums, start, end) {
[nums[start], nums[end]] = [nums[end], nums[start]];
}
console.log(sort([2,9,0]));