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));