Quantcast
Channel: Programming – Gea-Suan Lin's BLOG
Viewing all articles
Browse latest Browse all 99

線性找中位數的演算法:Quickselect + Median of Medians

$
0
0

上禮拜看到「My Favorite Algorithm: Linear Time Median Finding (2018) (rcoh.me)」這篇,原文是 2018 的文章「My Favorite Algorithm: Linear Time Median Finding」。

找中位數最直覺的想法是排序後直接拉出來,這樣的演算法在最差情況下可以做到 O(nlog(n))

不過這個問題有 Quickselect + Median of medians 的組合技,可以達到最差情況下仍然有線性時間解 O(n)

記得是演算法的經典教科書 Introduction to Algorithms (封面是個楓葉 + tree 的意象圖) 很前面的部分,好像還在 Master theorem 前面?(手上沒這本書,一時間不確定...)

其實整個演算法不難懂,用的數學證明線性時間也很簡單,用中文講理解其實蠻快的,差不多是高中生就可以理解的程度。

但記得大一時翹課 + 英文閱讀還不夠好,自己讀原文書的專注度大多放在英文閱讀上,理解演算法能分到的腦力有限,花了不少時間才理解... 現在回頭來看覺得頗有趣的。


Viewing all articles
Browse latest Browse all 99