中值算法递归关系的中位数

时间:2015-02-06 05:09:12

标签: sorting recursion recurrence quickselect median-of-medians

我知道线性选择(中位数算法的中位数)递归方程如下:

T(n) <= an + T(n/5) + T(7n/10)

但这些术语来自哪里?我一直试图理解,但我非常困惑。谁能请一些亮点?

1 个答案:

答案 0 :(得分:2)

最佳尝试:

这个等式仅适用于你做5组的中位数。否则它会改变。等式的一部分是算法遍历所有元素并将它们分组为5所花费的时间.T(n / 5)是为每组5找到中值所花费的时间。因为有5个组中有5个。

T(7n / 10)需要更多时间......

当你做中位数的中位数时,元素被分解为4个象限。 3/10的元素大于中位数的中位数,3/10元素小于中位数的中位数。另外4/10被分成两组,每组2/10。这些元素是您不确定它们是大于还是小于中位数的中位数的元素。因此,您可以拥有的大于或小于中位数中位数的最大元素数是3/10 + 2/10 + 2/10 = 7/10。所以T(7n / 10)是继续计算的一部分,最大数字段大于/小于中位数的中位数....

希望这样有道理。