【问题标题】:QuickSort, Algorithms, 4th ed. - [Sedgewick, Wayne]快速排序,算法,第 4 版。 - [塞奇威克,韦恩]
【发布时间】:2016-12-02 15:15:44
【问题描述】:

我有一个问题。在我阅读 Sedgewick 和 Wayne 的书时,我发现了一些我无法理解的句子。他们写: -“首先,我们做这两个 在处理整个数组之前进行递归调用[他们谈论 MergeSort];在第二种情况下,我们在处理整个数组后进行两次递归调用[他们谈论的是 QuickSort]。” 可能有人向我解释这两个句子的完整概念。 致以最诚挚的问候!

【问题讨论】:

    标签: algorithm quicksort


    【解决方案1】:

    它指的是在 Merge 和 QuickSort 都使用的分而治之策略中完成工作的顺序。

    具体来说,MergeSort 将工作分成更小的块并进行递归调用,然后将两个结果合并在一起。它递归地调用自己执行合并步骤。

    QuickSort 首先找到一个枢轴并通过交换元素执行分区,然后将工作划分为更小的块并进行递归调用。它在执行分区步骤后递归调用自身。

    【讨论】:

      【解决方案2】:

      这些句子不必要地令人困惑。实际上,两种算法的工作方式完全相同:它们 A. 准备要处理的子问题,B. 处理子问题,递归调用 self,以及 C. 将子问题的解决方案组合成完整问题的完整解决方案。

      在归并排序中,子问题是通过将输入列表分成两半来准备的。

      在快速排序中,它们是通过将输入数组分成两部分来找到的,这些部分包含小于且不小于所选枢轴的值。

      mergesort的重组步骤是merging。

      快速排序的重组步骤是无操作的,即什么也不做,因为排序是在原地,在同一个数组上完成的。

      碰巧对于合并排序,最后一步更为重要,而对于快速排序 - 第一步。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-24
        • 2018-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-14
        • 2021-09-21
        相关资源
        最近更新 更多