快速排序法(Quick Sort)

← 回到首頁

快速排序法原理

快速排序法是一種高效的排序演算法,採用分治策略。它選擇一個樞紐元素,將陣列分為兩部分:小於樞紐的元素和大於樞紐的元素,然後遞歸地對兩部分排序。

操作步驟

  1. 選擇一個樞紐元素(通常是隨機或中位數)。
  2. 將陣列分割為三部分:小於樞紐、等於樞紐、大於樞紐。
  3. 遞歸地對小於和大於樞紐的部分進行排序。
  4. 合併這三部分得到最終的有序陣列。

時間與空間複雜度

項目 複雜度 說明
最壞時間複雜度 O(n²) 樞紐選擇不當時(如總選最大/最小值)
平均時間複雜度 O(n log n) 樞紐選擇較好的一般情況
最佳時間複雜度 O(n log n) 樞紐總是分割點的中位數時
空間複雜度 O(log n) 遞歸呼叫棧的深度

快速排序法演算法代碼

function quickSort(arr, low = 0, high = arr.length - 1) { if (low < high) { const pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } return arr; } function partition(arr, low, high) { const pivot = arr[high]; let i = low - 1; for (let j = low; j < high; j++) { if (arr[j] < pivot) { i++; [arr[i], arr[j]] = [arr[j], arr[i]]; } } [arr[i + 1], arr[high]] = [arr[high], arr[i + 1]]; return i + 1; }

排序動畫演示

600ms
比較次數 0
交換次數 0
分割次數 0
陣列大小 8