以前圖廣度,學的知識不過腦子。重學下快排。記錄下學習歷程!bash
一遍寫下來雖然花了很多時間,但感受對爲於一些模糊的問題都有了比較深入的認識,好比爲何快排是不穩定的學習
告別不愛動手的壞毛病ui
const arr = [45, 10, 11, 88, 34, 90]
// const quickSort = arr => {
// if (arr.length < 2) return arr
// const spliceItem = arr.splice(0, 1)
// const leftPointArr = []
// const rightPointArr = []
// arr.forEach(item => {
// if (item >= spliceItem) rightPointArr.push(item)
// else leftPointArr.push(item)
// });
// return leftPointArr.concat(spliceItem, rightPointArr);
// }
const quickSort = (arr, left = 0, right = arr.length - 1) => {
const pivot = arr[Math.ceil((left + right)/ 2 )] //中間值爲基準值
let leftPoint = left
let rightPoint = right
let index
if (left < right) {
while (leftPoint < rightPoint) {
while(arr[rightPoint] > pivot) {
rightPoint--
}
while(arr[leftPoint] < pivot) {
leftPoint++
}
[arr[leftPoint], arr[rightPoint]] = [arr[rightPoint], arr[leftPoint]]
}
index = leftPoint
quickSort(arr, left, index - 1)
quickSort(arr, index + 1, right)
}
return arr
}
console.log(quickSort(arr))
複製代碼