中位数中位数算法的解释

时间:2012-09-22 16:48:40

标签: algorithm quicksort median median-of-medians

Median of medians方法在quicksort类型分区算法中非常流行,以产生相当好的数据透视,从而统一分区数组。其逻辑在维基百科中给出:

  

所选择的枢轴小于和大于中位数列表中元素的一半,每半个元素大约为n / 10个元素(1/2 *(n / 5))。这些元素中的每一个都是5的中值,使得它少于2个其他元素并且在块之外大于2个其他元素。因此,枢轴在块外部小于3(n / 10)个元素,并且大于块外的另外3个(n / 10)个元素。因此,所选择的中位数将元素分割在30%/ 70%和70%/ 30%之间,这可以确保算法的最坏情况线性行为。

有人可以清楚地为我解释一下。我发现很难理解逻辑。

2 个答案:

答案 0 :(得分:14)

想想以下几组数字:

5 2 6 3 1

这些数字的中位数为3。现在,如果您有一个n,如果n > 3,那么它大于上述数字的至少一半。如果n < 3,则它小于上述数字的至少一半。

这就是这个想法。也就是说,对于每组5个数字,你得到它们的中位数。现在您有n / 5个号码。这很明显。

现在,如果你得到这些数字的中位数(称之为m),它大于它们的一半而小于另一半(根据中位数的定义!)。换句话说,m大于n / 10个数字(它们本身就是小5个元素组的中位数),并且大于另一个n / 10个数字(再次是小5个元素组的中位数)

在上面的示例中,我们看到如果中位数为k并且您有m > k,则m也大于其他2个数字(它们本身小于{{} 1}})。这意味着对于k大于其中等的那些较小的5个元素组中的每一个,m也比其他两个数字更大。这使得每个m小5个元素组中至少有3个数字(2个数字+中位数本身),小于n / 10。因此,m至少大于m个数字。

元素数量3n/10的类似逻辑大于。

答案 1 :(得分:3)

在这里可以找到中位数 - 中位数算法来解释n中第k个最大整数的解释:http://cs.indstate.edu/~spitla/presentation.pdf