【问题标题】:Randomized Quicksort随机快速排序
【发布时间】:2013-01-29 11:28:30
【问题描述】:

实现随机快速排序的两种方法,

方法1:选择一个随机枢轴

方法 2:生成输入的随机排列并将其提供给选择第一个元素作为枢轴的快速排序

method1和method2在随机化方面是一样的吗?

注意:看起来 Method2 产生所有分区的可能性相同,但 method1 不会。因此,如果它们不一样,那么我想了解性能影响是什么。

【问题讨论】:

  • 我会说是的。每一步的二分法在两种方法中都遵循相同的规律。

标签: algorithm sorting random quicksort


【解决方案1】:

是的。在任何一种情况下,任何特定元素被选为枢轴的概率都是 1/len(input)。 (但是,第二种方法几乎肯定会慢一个常数因子,因为它需要额外的线性传递来生成随机排列。)

【讨论】:

  • 但是对于一个特定的输入,第二种方法有所有的 n!排列同样可能,但第一种方法不会改变输入的相对顺序,因此它不包括输入的所有可能分区。所以我觉得有区别,但不确定会产生什么影响。
  • 我不确定您所说的“所有可能的分区”是什么意思。大于或小于枢轴元素的元素集完全不依赖于它们的顺序。
  • 很抱歉我弄糊涂了,我现在明白了。谢谢
猜你喜欢
  • 2013-11-22
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 2021-10-26
  • 2021-03-29
  • 2021-07-27
  • 2020-03-30
  • 1970-01-01
相关资源
最近更新 更多