- 快速排序通过选择一个主元素即 selected 把数组分成了比这个选择值大的和比这个选择值小的部分
- 通过传递这两部分数据下去,当小于两个元素即排好了 (结束条件),需要将数据 传递归上去
- 这样从最底层一层层递归上去后那么数据就排好了
function quickSort(arr) {
if(arr.length < 2) return arr
const selected = arr[0]
const eq = []
const bigger = []
const smaller = []
for(let i = 0; i < arr.length; i++) {
if(arr[i] > selected) {
bigger.push(arr[i])
} else if(arr[i] < selected) {
smaller.push(arr[i])
} else {
eq.push(arr[i])
}
}
const biggerSorted = quickSort(bigger)
const smallerSorted = quickSort(smaller)
return [...smallerSorted, ...eq, ...biggerSorted]
}
这种写法应付大部分面试时足够了的,但是通不过leetcode的检测,主要是数量级一大起来这种写法就会有溢出栈的bug