【问题标题】:QuickSort Partitioning pivot anomalyQuickSort 分区枢轴异常
【发布时间】:2018-09-02 18:50:14
【问题描述】:

考虑一个数组 A={1,2,0,4,5} 我如何通过在分区过程中将中间元素作为枢轴使用快速排序对其进行排序?..枢轴变为“0”等这个数组,不存在有效的左指针。如何解决这个异常?谁能解释一下这个算法的逐步工作原理吗?

【问题讨论】:

  • Quicksort 在这种情况下工作正常,尽管如果选择的每个枢轴都在一端或另一端,它的性能会受到影响。我怀疑你在这里得到的关于快速排序的解释比任何无数的解释都好,包括wikipedia
  • 在分区之后你将拥有A = {0, 2, 1, 4, 5} 然后你需要递归地对范围[-1, 0)(空)和[1, 5)进行排序。
  • 取第一个、中间和最后一个元素的中位数可以避免这种情况,所以略有改进。

标签: algorithm quicksort partitioning array-algorithms


【解决方案1】:

多年来对pick a pivot算法进行了一系列改进,首先使用最后一个元素作为pivot,很快改进为选择随机元素,这样可以防止对算法的恶意攻击,然后选择媒体x 随机。

median of medians,它将元素在 30%/70% 和 70%/30% 之间拆分,因此始终保证至少 30% 的进度,一个很好的 article 解释了这一点,最近(2017 年)得到了改进Alexandrescu et al 通过自适应算法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    相关资源
    最近更新 更多