1.在数据集之中,找一个基准点
-
建立两个数组,分别存储左边和右边的数组
-
利用递归进行下次比较
function quickSort(arr) {
if (arr.length <= 1) {
// 如果数组只是一个元素 递归终止
return arr
}
// 找到数组中间的基准索引
let pointIndex = ~~arr.length / 2
// 找到数组中间索引的值
let pointValue = arr.splice(pointIndex, 1)
let left = [], right = []
arr.forEach(item => {
// 基准点的左边的数传到左边数组 基准点的右边的数传到右边数组
item < pointValue ? left.push(item) : right.push(item)
})
//递归不断重复比较
return quickSort(left).concat(pointValue, quickSort(right))
}
网友评论