T(n)=2T(n/2)+n=o(nlogn)
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 ( n l o g n ) O(nlogn),最差时间复杂度是 O ( n 2 ) O(n2),期望时间复杂度是 O ( n l o g n ) O(nlogn)。 这里我们证明一下快排的期望时间复杂度。 设 T ( n ) T(n) 为对长度为 n n 的序列进行快速排序所需要的期望时间。我们有: <script type="text/javascript" src="http://common.cnblogs.com/script/ASCIIMathML.js"></script> T ( 0 ) = 0 T(0)=0 以及: T ( n ) = n + 1 n ∑ i = 0 n − 1 ( T ( i ) + T ( n − i − 1 ) ) T(n)=n+1n∑i=0n−1(T(i)+T(n−i−1)) 我们可以通过放缩来获得对 T ( n ) T(n) 上界的一个估计。 T