快速排序步骤其实是在冒泡的基础上实现:
(1)找基准值
(2)左边放比基准值大的(小),右边放比基准值小的(大)
代码如下:
function quickSort(arr) {
if(arr.length <= 1) {
return arr
}
// 找基准值,我取中间
let midIndex = Math.floor(arr.length / 2)
let mid = arr.splice(midIndex, 1)[0]
let left = [] // 比它小的
let right = [] // 比它大的
for(let i=0; i<arr.length; i++) {
if(arr[i]<=mid) {
left.push(arr[i])
}else {
right.push(arr[i])
}
}
return quickSort(left).concat([mid], quickSort(right))
}
let arr = [1,2,3,4,1,2,5,4,1,2,4,1,12,5,4,12,2,5,45,41,2,5,4,11,456]
let res = quickSort(arr)
console.log(res)