function sortArray(nums) {
randomizedQuicksort(nums, 0, nums.length - 1)
return nums
}
function randomizedQuicksort(nums = [], l, r) {
if (l < r) {
let pos = randomizedPartition(nums, l, r)
randomizedQuicksort(nums, l, pos - 1)
randomizedQuicksort(nums, pos + 1, r)
}
}
function randomizedPartition(nums = [], l, r) {
let i = parseInt(Math.random() * (r - l + 1))+ l
swap(nums, r, i)
return partition(nums, l, r)
}
function partition(nums = [], l, r) {
let pivot = nums[r]
let i = l - 1
for (let j = l; j <= r - 1; ++j) {
if (nums[j] <= pivot) {
i = i + 1
swap(nums, i, j)
}
}
swap(nums, i + 1, r)
return i + 1
}
function swap(nums = [], i, j) {
let temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
}
function sortArray(nums) {
randomizedQuicksort(nums, 0, nums.length - 1)
return nums
}
function randomizedQuicksort(nums = [], l, r) {
if (l < r) {
let pos = randomizedPartition(nums, l, r)
randomizedQuicksort(nums, l, pos - 1)
randomizedQuicksort(nums, pos + 1, r)
}
}
function randomizedPartition(nums = [], l, r) {
let i = parseInt(Math.random() * (r - l + 1))+ l
swap(nums, r, i)
return partition(nums, l, r)
}
function partition(nums = [], l, r) {
let pivot = nums[r]
let pointer = l
for (let j = l; j <= r - 1; j++) {
if (nums[j] <= pivot) {
swap(nums, pointer, j)
pointer++
}
}
swap(nums, pointer, r)
return pointer
}
function swap(nums = [], i, j) {
let temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
}