选择算法中良好的枢轴VS“坏枢轴”之间有什么区别?

时间:2012-06-22 07:25:02

标签: algorithm runtime selection big-o

我正在尝试了解Select algorithm,我遇到a good pivot VS a bad pivot。我可以看到该算法使用Partition算法来分离右边的较大元素 枢轴,以及枢轴左侧的较小元素。

  • 但是bad pivot是什么意思?
  • bad pivot如何将总运行时间投入O(n^2)

谢谢

1 个答案:

答案 0 :(得分:4)

如果选择算法可以在每一步丢弃阵列的大块,那么选择算法将会很快。一个好的枢轴是对于“很多”的某些定义导致算法丢弃“很多”数组元素的枢轴。一个坏的数据透视表是算法丢弃该数组的非常标题的数据。

在最坏的情况下,pivot可能是数组中最大或最小的元素。如果发生这种情况,那么算法将以一组值为空的方式对元素进行分区,因为没有元素小于枢轴或没有大于枢轴的元素。该分区步骤需要时间O(n),并且必须运行O(n)次,因为每次迭代将数组的大小减小一。这会将算法运行时降级为O(n 2 )。有趣的是,这也是快速排序退化到时间O(n 2 )的方法。

希望这有帮助!