QuickSort,算法,第 4 版。 - [塞奇威克,韦恩]
QuickSort, Algorithms, 4th ed. - [Sedgewick, Wayne]
我有一些问题。在阅读 Sedgewick 和 Wayne 的书时,我发现了一些我无法理解的句子。他们写:
-“首先,我们做两个
在处理整个数组之前进行递归调用[他们谈论 MergeSort];在第二种情况下,我们在处理整个数组后进行两次递归调用[他们谈到 QuickSort]。”
可能有人向我解释了这两句话的全部含义。
谨致问候!
它指的是在 Merge 和 QuickSort 都使用的分而治之策略中完成工作的顺序。
具体来说,MergeSort 将工作分成更小的块并进行递归调用,然后将两个结果合并在一起。它在执行合并步骤之前递归调用自己。
QuickSort首先找到一个枢轴并通过交换元素进行分区,然后将工作分成更小的块并进行递归调用。它在执行分区步骤后递归调用自己。
这些句子不必要地令人困惑。实际上,这两种算法的工作方式完全相同:它们 A. 准备要处理的子问题,B. 处理子问题,递归调用自身,以及 C. 将子问题的解决方案组合成完整问题的完整解决方案。
在合并排序中,子问题是通过将输入列表分成两半来准备的。
在快速排序中,它们是通过将输入数组分成两部分来找到的,这些部分包含的值更小,但不小于所选的主元。
合并排序的重组步骤是合并。
快速排序的重组步骤是空操作,即什么都不做,因为排序是就地,相同数组。
碰巧对于归并排序,最后一步更为重要,而对于快速排序,则是第一步。
我有一些问题。在阅读 Sedgewick 和 Wayne 的书时,我发现了一些我无法理解的句子。他们写: -“首先,我们做两个 在处理整个数组之前进行递归调用[他们谈论 MergeSort];在第二种情况下,我们在处理整个数组后进行两次递归调用[他们谈到 QuickSort]。” 可能有人向我解释了这两句话的全部含义。 谨致问候!
它指的是在 Merge 和 QuickSort 都使用的分而治之策略中完成工作的顺序。
具体来说,MergeSort 将工作分成更小的块并进行递归调用,然后将两个结果合并在一起。它在执行合并步骤之前递归调用自己。
QuickSort首先找到一个枢轴并通过交换元素进行分区,然后将工作分成更小的块并进行递归调用。它在执行分区步骤后递归调用自己。
这些句子不必要地令人困惑。实际上,这两种算法的工作方式完全相同:它们 A. 准备要处理的子问题,B. 处理子问题,递归调用自身,以及 C. 将子问题的解决方案组合成完整问题的完整解决方案。
在合并排序中,子问题是通过将输入列表分成两半来准备的。
在快速排序中,它们是通过将输入数组分成两部分来找到的,这些部分包含的值更小,但不小于所选的主元。
合并排序的重组步骤是合并。
快速排序的重组步骤是空操作,即什么都不做,因为排序是就地,相同数组。
碰巧对于归并排序,最后一步更为重要,而对于快速排序,则是第一步。