1. 程式人生 > 其它 >2021-03-03

2021-03-03

快速排序:
找⼀個標誌位,先遍歷⼀次,所有個頭⽐他矮的,都站左邊,⽐他個頭⾼的,都站右邊,遍歷
⼀次,就把陣列分成兩部分,然後兩遍的陣列,遞迴執⾏相同的邏輯

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

在這裡插入圖片描述