【发布时间】:2015-04-06 04:36:16
【问题描述】:
我知道线性选择(中位数算法的中位数)递推方程如下:
T(n) <= an + T(n/5) + T(7n/10)
但是这些术语是从哪里来的呢?我一直在试图理解,但我非常困惑。任何人都可以解释一下吗?
【问题讨论】:
标签: sorting recursion recurrence quickselect median-of-medians
我知道线性选择(中位数算法的中位数)递推方程如下:
T(n) <= an + T(n/5) + T(7n/10)
但是这些术语是从哪里来的呢?我一直在试图理解,但我非常困惑。任何人都可以解释一下吗?
【问题讨论】:
标签: sorting recursion recurrence quickselect median-of-medians
最佳尝试:
该等式仅适用于当您计算 5 组的中位数时。否则它会改变。等式的一部分是算法遍历所有元素并将它们分组为 5 所需的时间。T(n/5) 是为每组 5 找到中值所需的时间。因为有 n/5 组,每组 5 个。
T(7n/10) 需要更多时间...
当您计算中位数的中位数时,元素被分成 4 个象限。 3/10 的元素大于中位数的中位数,3/10 的元素小于中位数的中位数。另一个 4/10 分成 2 组,每组 2/10。这些是您不确定它们是否大于或小于中位数中位数的元素。因此,您可以拥有的大于或小于中位数中位数的元素的最大数量为 3/10 + 2/10 + 2/10 = 7/10。因此,T(7n/10) 是继续方程的一部分,其中最大数字段大于/小于中位数的中位数....
希望那是有道理的。
【讨论】: