快速排序的最優時間復雜度是 \(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) \]