簡體   English   中英

遞歸關系,分析算法

[英]Recurrence relations, analyze algorithm

好吧,我很難完全理解遞歸關系。

因此,例如,如果我在最壞的情況下使用Θ符號分析快速排序,請為數組輸入未排序的正數;

當基本情況n <= 3時,我使用插入排序對小數組進行排序。 時間:O(1)或O(n ^ 2)?

我使用線性搜索將樞軸設置為所有元素的中位數。 時間:Θ(n)

對樞軸的左右分區並執行遞歸。 時間:我認為2 * T(n / 2)

遞歸是否為:T(n)= O(1)+Θ(n)+ 2 * T(n / 2)那么?

有人告訴我,基本情況將花費O(n ^ 2)時間,因為如果輸入足夠小,那將是最壞的情況。 那會給我遞歸嗎:T(n)= O(n ^ 2)+Θ(n)+ 2 * T(n / 2)?

  1. 當基本情況n <= 3時,我使用插入排序對小數組進行排序。
    • 總是O(1)
  2. 我使用線性搜索將樞軸設置為所有元素的中位數。
    • 您可能需要進一步說明這一點,要找到中位數作為樞軸,並不是進行線性搜索的簡單任務。 幾種方法是:i)使用快速選擇算法 (平均值O(N))或ii)對子分區 O(NlogN)進行排序 iii) 中位數算法 O(N)。
  3. 對樞軸的左右分區並執行遞歸。
    • 2F(N / 2)+ N

將它們放在一起(假設樞軸始終是中位數,並且每次用O(N)來找到樞軸):

Best_Case = Worst_Case(因為樞軸始終為中間值)

F(3) = F(2) = F(1) = 1

F(n) = 2F(N/2) + 2N 
= 2(2F(N/2^2) + 2(N/2)) + 2N 
= 2(2)F(N/2^2) + 2N + 2N
= 2(3)F(N/2^3) + 3(2)N
= 2(LogN)F(N/N) + (2N)LogN
= O(NlogN)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM