2021-03-03
阿新 • 來源:網路 • 發佈:2021-03-15
快速排序:
找⼀個標誌位,先遍歷⼀次,所有個頭⽐他矮的,都站左邊,⽐他個頭⾼的,都站右邊,遍歷
⼀次,就把陣列分成兩部分,然後兩遍的陣列,遞迴執⾏相同的邏輯
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));

