8. 2 隨機演算法 • Divide & Conquer Randomized-Select(A, p, r, i) { if p==r then return A[p]; q=Randomized-Partition(A, p, r); k=q-p+1; if i==k then return A[q]; elseif i<k then return Randomized-Select(A, p, q-1, i); else return Randomized-Select(A, q+1, r, ik); } Median and Order Statistics 5
k A[q] p i<k q r i=k i>k A[q]即 是所求 A[q] p A[q] q+1 q-1 在此找第i大的元素 r 在此找第i-k大的元素 Median and Order Statistics 6
Median and Order Statistics 9
> x :較x小 :較x大 Median and Order Statistics 13
分析 • 利用替換法,令T(n) cn Median and Order Statistics 15
Worst case linear-time order statistics之應用 • 可用於實作時間複雜度為Θ(nlogn)的Quicksort。 • Modified-Quicksort { 利用Select找出中位數x 使用x作為Pivot進行Partition 將大於x以及小於x的兩部分遞迴執行排序 } • 由於使用中位數進行Partition,所以大於x及小於x 兩部份均不大於n/2,故T(n)=Θ(nlogn)。 Median and Order Statistics 16