1.在數(shù)據(jù)集之中,找一個基準(zhǔn)點
建立兩個數(shù)組,分別存儲左邊和右邊的數(shù)組
利用遞歸進行下次比較
function quickSort(arr) {
if (arr.length <= 1) {
// 如果數(shù)組只是一個元素 遞歸終止
return arr
}
// 找到數(shù)組中間的基準(zhǔn)索引
let pointIndex = ~~arr.length / 2
// 找到數(shù)組中間索引的值
let pointValue = arr.splice(pointIndex, 1)
let left = [], right = []
arr.forEach(item => {
// 基準(zhǔn)點的左邊的數(shù)傳到左邊數(shù)組 基準(zhǔn)點的右邊的數(shù)傳到右邊數(shù)組
item < pointValue ? left.push(item) : right.push(item)
})
//遞歸不斷重復(fù)比較
return quickSort(left).concat(pointValue, quickSort(right))
}