Median of medians
方法在quicksort
類型分區算法中非常流行,以產生相當好的支點,從而使其統一劃分數組。它的邏輯在維基百科中給出如下:Medians算法中值的說明
所選樞軸既小於也大於中位數列表中元素的一半,大約爲n/10個元素(1/2 *(n/5) ))每半年。這些元素中的每一個都是5的中位數,使得它在塊之外少於2個其他元素和多於2個其他元素。因此,該數據塊在數據塊外小於3(n/10)個元素,並且大於該數據塊外部另外3個(n/10)個元素。因此,所選擇的中位數在30%/ 70%和70%/ 30%之間分解,這確保了算法的最壞情況線性行爲。
有人可以爲我解釋清楚一點。我發現很難理解邏輯。
又一個問題,請問這種方法保證,這個數字將是中位數?中位數是將陣列分成上半部分和下半部分的數字。那麼30-30-70這個數字意味着什麼? – SexyBeast
那麼,中位數在中間,但是'm'(在上面的文本中)並不是所有數字的中位數。這個數字的中位數只有1/5(這本身就是5個元素組的中位數)。嘗試閱讀最後一段,更多關注。最後,在結論中,「m」大於數字的至少3n/10,那麼轉換爲「m」的數字至少大於數字的30%。所以最後,「m」大於至少30%,小於至少30%。剩下40%我們不確定。 – Shahbaz
那麼它是如何得到平均50-50分區的呢? 50-50分區是由正常的中位數給出的,對吧? – SexyBeast