Comparison & Swap

排序方法能達到多快 ?

假設排序方法的設計是採用 Comparison & Swap 技巧

  • 利用決策樹 (Decision Tree) 來判斷:
    • Decision Tree: 描述 Sort 過程中,各種狀況的比較過程
      • Non-leaf Node: 表示 “Comparison
      • 左、右分枝: 表示 “Yes” or “No
      • Leaf: 排序結果
  • 例:試說明 3 個資料 a,b,c 排序之 Decision Tree

說明

  • n 個資料做 Sort,有 n! 個可能的排序結果。因此,SortDecision Treen! 個 Leaf nodes
  • 根據二元樹之定理: 二元樹中,第 ilevelnode 個數最多有 \(2^{i-1}\)
    • \(2^{i-1} = n!\)\(i-1 = \lceil \log_2n!\rceil\)\(i = \lceil \log_2n!\rceil + 1\),表示此 Tree高度至少為\(\lceil \log_2n!\rceil + 1\)
  • 比較次數為 \(\geq \lceil \log_2n!\rceil\)
  • \(n! \geq {\frac{n}{2}}^{\frac{n}{2}}\)\(\lceil \log_2n!\rceil \geq \log{\frac{n}{2}}^{\frac{n}{2}} = \frac{n}{2}\log\frac{n}{2} \leq O(n\log n)\)

參考資料