【问题标题】:Runtime of R-Select vs Select in average case?平均情况下 R-Selected 与 Select 的运行时间?
【发布时间】:2016-10-23 06:26:40
【问题描述】:

在最坏的情况下,R-select 是 O(n^2),而 select 是 O(n)。有人可以在一般情况下解释和对比他们的行为吗?

附: - 我不确定它是否是一个重复的问题。如果是这样我可以删除!谢谢!!

【问题讨论】:

  • P.P.s.:如果需要有关该问题的其他信息,请告诉我! .谢谢!
  • 原谅我的无知,什么是“R-Select”?
  • 恕我直言,如果目标是在数组中找到第 i 个最小的元素(不改变元素的任何顺序),我们可以随机选择一个枢轴来实现这一点。这将是 R 选择。希望这能让我的问题更容易理解。谢谢!

标签: algorithm performance sorting selection clrs


【解决方案1】:

通过 R-select,我假设您正在谈论随机选择算法,该算法通过选择一个枢轴,在该枢轴上进行分区,然后从那里递归地进行。如果不是这样,请告诉我!

R-select 算法的最坏情况是 Θ(n2) 是正确的,但这在实践中极不可能出现。这要求您非常频繁地选择一个远离最小值或最大值的恒定元素数内的枢轴,并且发生这种情况的可能性呈指数级低。 O(n) 的平均情况运行时间实际上很可能发生;您可以prove,例如,对于任何常数 k,运行时间为 O(n log n) 的概率至少为 1 - 1/nk。

隐藏在 R-select 的 big-O 表示法中的常数项实际上非常低,以至于 R-select 通常比中位数选择算法快得多。事实上,它们有时会结合在一起。 introselect 算法通过运行 R-select 并查看运行时来工作,如果运行时最终看起来很糟糕,则切换到中位数选择算法。整个运行时间是最坏情况 O(n) 并且与 R-select 相当。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 2013-06-06
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多