簡體   English   中英

我如何證明快速排序的主定理

[英]how can i prove the master theorem for quicksort

我有一個關於快速排序算法的問題。 有人能解釋一下我是如何得到結果(證明)2T(n/2) + Θ(n) 的嗎? 這個結果意味着什么:T(n-1) + Θ(n)。

感謝所有的答案。

主定理指出,

對於任何主要功能 ,

  1. 如果第一個條件 對於一些常數厄普西隆 > 0 ,那么T(n) .
  2. 如果第二個條件 ,那么公式 .
  3. 如果第三個條件 ,對於一些常數厄普西隆 ,如果功能 對於一些常數c < 1 並且都足夠大n ,那么T(n)

至於你的,
功能 ,
a = 2, b = 2
在這里,
西塔 (第二個條件)
所以復雜度將是: 復雜性

對於你的第二個問題,了解這個功能第二個問題 ,你需要了解分而治之的方法。 在快速排序中,對於n 個項目,如果您將最后一個值作為主元,則項目數將減少1 ,這會將項目數減少到(n-1) ,現在如果您遞歸調用以最后一個值為基礎的快速排序樞軸,每次將減少一項。 因此復雜度將是第二個問題 ,當您將中間值作為樞軸時,情況並非如此。

在這里得到這個我將通過 O 解決 T(n-1)+O(N) 我的意思是 theta 所以讓 m=2^n 所以 log(m)=n

現在讓我們聲明一個新函數 S(m)=T(log m)

現在讓我們說

S(m)=S(m/2)+log(m)

現在你同意 S(m/2)+log(m) 等於 T(n-1)+n 嗎?

因為如果 m=2^n 所以 m/2=2^(n-1) 所以 log m(n-1) 我們已經確定 logm=(n)

所以現在我們已經建立了 S(m/2)+log(m)=T(n-1)+n 讓我們用主定理求解 S(m/2)+log(m)擴展案例 2 說明按鏈接查看它,因此如果我們遵循它,我們將得到 log2(1)=0 和 f(m)=logm=O(logm)=O((n^0)*logm)當 k 為 1 時,我們得到 S(m)=O(log^2 m) 或 O(n^2) 已知是快速排序的最壞情況

暫無
暫無

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

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