【发布时间】:2018-10-15 09:57:14
【问题描述】:
我知道中位数算法的中位数公式是:
T(n)<= T(0.7n)+T(0.2n)+O(n) 和 O(n) 来自于找到每个块的中位数(大小为 5),我想知道为什么需要 O(n) 才能找到每个块的中位数.. 听起来像找到一个块的中位数需要 @ 987654323@。怎么可能?
【问题讨论】:
标签: algorithm sorting median median-of-medians
我知道中位数算法的中位数公式是:
T(n)<= T(0.7n)+T(0.2n)+O(n) 和 O(n) 来自于找到每个块的中位数(大小为 5),我想知道为什么需要 O(n) 才能找到每个块的中位数.. 听起来像找到一个块的中位数需要 @ 987654323@。怎么可能?
【问题讨论】:
标签: algorithm sorting median median-of-medians
每个块的大小是恒定的 (5)。因此,找到每个块的中位数在O(1) 中(对O(1) 中的块进行排序,并将中间索引作为中位数)。因此,找到所有块的中位数在O(n)。然后找到在your other question 中回答的每个块的中位数的中位数。
【讨论】:
c*n。
n log n。因此,您可以在 5 log 5 中执行此操作,其中是常量