2016-12-02 48 views
0

我有一些問題。在我閱讀Sedgewick和Wayne書的過程中,我發現了一些我無法理解的句子。他們寫道:「在第一個例子中,我們在處理整個數組之前做了兩個 遞歸調用[他們談論MergeSort];在第二個例子中,我們在處理整個數組之後做了兩次遞歸調用[他們談論QuickSort]。「 可能有人向我解釋這兩句話的完整概念。 祝好!QuickSort,Algorithms,4th ed。 - [Sedgewick,Wayne]

回答

1

這些句子不必要的混淆。實際上,兩種算法的工作方式完全一樣:A.準備子問題進行工作,B.處理子問題,遞歸調用自己,C.將解決方案與子問題結合成完整問題的完整解決方案。

在mergesort中,通過將輸入列表分成兩部分來準備子問題。

在快速排序中,它們是通過將輸入數組分成兩部分來找到的,這兩部分包含的值較小,而且不小於選定的樞軸。

mergesort的重組步驟正在合併。

對於快速排序的重組步驟是無操作,即什麼都不做,這是因爲分選在適當的位置做,上同一陣列。

恰巧合並排序的最後一步更爲實質,並且對於快速排序 - 第一個。

3

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

具體來說,MergeSort將工作分成更小的塊並進行遞歸調用,然後將兩個結果合併在一起。它在執行合併步驟之前遞歸地調用自身

QuickSort首先找到一個數據透視表並通過交換元素執行一個分區,然後將工作分成更小的數據塊並進行遞歸調用。它在執行分區步驟後遞歸地調用自身