1. 程式人生 > >快速排序的時間複雜度nlogn是如何推導的??

快速排序的時間複雜度nlogn是如何推導的??

本文以快速排序為例,推導了快排的時間複雜度nlogn是如何得來的,其它演算法與其類似。

對資料Data = { x1, x2... xn }:

T(n)是QuickSort(n)消耗的時間;

P(n)是Partition(n)消耗的時間;

(注:Partition專指把n個數據分為大小2份的時間)

有些文章給出了快排的精確計算結果:

C(n) = n - 1 + \frac{1}{n} \sum_{i=0}^{n-1} (C(i)+C(n-i-1)) = 2n \ln n = 1.39n \log_2 n.

注:ln( n ) > 1/2 + 1/3 ... + 1/n

證明: