碼上快樂
1秒登錄
首頁
榜單
標簽
關於
搜索
相關內容
簡體
繁體
快速排序的最優時間復雜度是 O(nlogn)
本文轉載自
查看原文
2020-03-23 13:30
3072
T(n)=2T(n/2)+n
設n=2^k
T(n/2)=2T(n/2^2)+n/2
T(n/2^2)=2T(n/2^3)+n/2^2
T(n)=2T(n/2)+n=2^2T(n/2^2)+2*n/2+n=2^3T(n/2^3)+2^2*n/2^2+2*n/2+n
=2^kT(1)+kn=nT(1)+kn=n(logn+T(1))=o(nlogn)
注:T(1)=0
快速排序的最優時間復雜度是 \(O(nlogn)\),最差時間復雜度是 $O(n^2)$,期望時間復雜度是 $O(nlogn)$。
這里我們證明一下快排的期望時間復雜度。
設$T(n)$為對長度為$n$的序列進行快速排序所需要的期望時間。我們有:
$$T(0) = 0$$
以及:
$$T(n) = n + \frac{1}{n}\sum_{i=0}^{n-1}(T(i) + T(n - i - 1))$$
我們可以通過放縮來獲得對 $T(n)$上界的一個估計。
$$T(n) = n + \frac{1}{n}\sum_{i=0}^{n-1}(T(i) + T(n - i - 1))$$
$$= n + \frac{2}{n}\sum_{i=\frac{2}{n}}^{n-1}(T(i) + T(n - i - 1))$$
$$= n + \frac{2}{n}\sum_{i=\frac{2}{n}}^{\frac{3n}{4}}(T(i) + T(n - i - 1)) + \frac{2}{n}\sum_{i=\frac{3n}{4}}^{n-1}(T(i) + T(n - i - 1))$$
因為 $T(n) >= n$ , 所以對於 $frac{n}{2} <= i <= j$,我們顯然有:
$$T(i) + T(n - i) <= T(j) + T(n - j)$$
所以:
$$T(n) <= n + \frac{2}{n}\sum_{i=\frac{2}{n}}^{\frac{3n}{4}}(T(\frac{3n}{4}) + T(\frac{n}{4})) + \frac{2}{n}\sum_{i=\frac{3n}{4}}^{n-1}(T(n - 1) + T(0))$$
$$<= n + \frac{1}{2}(T(\frac{3n}{4}) + T(\frac{n}{4})) + \frac{1}{2}T(n-1)$$
我們要證明 $T(n) = O(nlogn)$, 這需要證明存在常數 $c$ 滿足 $T(n) <= cnlogn$。
我們考慮用數學歸納法證明。$n = 0$時定理顯然成立。現在假設對於 $m <= n$ 定理皆成立。那么:
$$T(n) <= n + \frac{1}{2}(T(\frac{3n}{4}) + T(\frac{n}{4})) + \frac{1}{2}T(n-1)$$
$$<= n +\frac{1}{2}(c(\frac{3n}{4})log(\frac{3n}{4}) + c(\frac{n}{4})log(\frac{n}{4})) + \frac{1}{2}c(n-1)log(n-1)$$
$$<= n +c(\frac{3n}{8}log(n) - \frac{3n}{8}log(\frac{4}{3}) + \frac{n}{8}log(n) - \frac{n}{8}log(4) + \frac{n}{2}log(n))$$
$$= cnlogn + n(1 - \frac{3c}{8}log(\frac{4}{3}) - \frac{c}{4})$$
當 $1 - \frac{3c}{8}log(\frac{4}{3}) - \frac{c}{4} <= 0$時,也即約$c >= \frac{5}{2}$,我們有:
$$T(n) <= cnlogn$$.
歸納成立,$T(n) = O(nlogn)$
×
免責聲明!
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。
猜您在找
快速排序的時間復雜度nlogn是如何推導的??
如何理解快速排序的時間復雜度是O(nlogn)
排序(二)時間復雜度為O(nlogn)的排序算法
快速排序的期望復雜度O(nlogn)證明。
平均時間復雜度為O(nlogn)的排序算法
快速排序時間復雜度為O(n×log(n))的證明
快速排序 時間復雜度計算
O(n^2)以及O(nlogn)時間復雜度的排序算法
對單鏈表進行時間復雜度為O(nlogn),空間復雜度為O(1)的排序
排序—時間復雜度為O(nlogn)的兩種排序算法
粵ICP備18138465號
© 2018-2025 CODEPRJ.COM