题目描述
分析
需要选用一种排序方法进行排序,我用快排
如果本体选用左右端的值,会导致超时,所以在 pivot 的选取上需要特别注意啊
算法
快速排序
过程
选取 pivot
划分左,右数组
继续向下划分知道只有 1 个元素
合并
代码
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortArray = function (nums) {
return quickSort(nums)
}
function quickSort(arr = []) {
if (arr.length <= 1) return arr
const pivot = arr.splice(Math.floor(arr.length / 2), 1)
const leftArr = []
const rightArr = []
arr.forEach((item) => {
if (item < pivot) {
leftArr.push(item)
} else {
rightArr.push(item)
}
})
return [...quickSort(leftArr), pivot, ...quickSort(rightArr)]
}