快速排序:
找⼀个标志位,先遍历⼀次,所有个头⽐他矮的,都站左边,⽐他个头⾼的,都站右边,遍历
⼀次,就把数组分成两部分,然后两遍的数组,递归执⾏相同的逻辑
let arr = [11, 4, 7, 5, 9]
function quickSort(arr) {
if (arr.length < 2) {
return arr; // 递归结束的出口(没有这行代码的话会陷入死循环)
}
let left = []
let right = []
let flag = arr.splice(0, 1) // 找一个标志位
for (const i of arr) {
if (i < flag) {
left.push(i)
} else {
right.push(i)
}
}
let newArr = quickSort(left).concat(flag, quickSort(right)) // 递归
return newArr
}
console.log(quickSort(arr));