《算法导论》笔记 第7章 7.4快速排序分析

【笔记】

利用RANDOMIZED-PARTITION,快速排序算法期望的运行时间当元素值不同时,为O(nlgn)。


【练习】

7.4-1 证明:在递归式:


中,T(n)=Ω(n^2)。

采用代换法。

猜测 T(n) <= c*n^2,c为某个常数。


选择足够大的c,使得 c*(2*n-1)可以支配Θ(n), T(n) <= c*n^2成立。


7.4-2 证明:快速排序的最佳情况运行时间为Ω(nlgn)。



7.4-3 证明:在q=0,1,...,n-1区间上,当q=0或q=n-1时,q^2+(n-q-1)^2取得最大值。

令x=q


一元二次函数,开口向上,x=(n-1)/2 为对称轴。

因为 0<=q<=n-1,所以x=0或x=n-1时,y取得最大值,即q^2+(n-q-1)^2取得最大值。


7.4-4 证明:RANDOMIZED-QUICKSORT 算法的期望运行时间是Ω(nlgn)。

随机化还没看=。=


7.4-5 当在一个长度小于k的子数组上调用快速排序时,让他不做任何排序就返回。当顶层的快速排序调用返回后,对整个数组运行插入排序来完成排序过程。证明这一排序算法的期望运行时间为O(nk+nlg(n/k))。在理论上和实践中,应如何选择k。

算法的时间由快速排序与插入排序两部分组成。

对于快速排序,递归树由logn变为logn-logk因此复杂度为O(nlog(n/k))。

对于插入排序,设快速排序将数组分为m份,每份Ki个元素,Ki<=k,∑Ki=n。

O(∑Ki*Ki) <= O(∑Ki*k) = O(k*∑Ki) = O(n*k)。

因此期望运行时间为O(nk+nlg(n/k))。

k的值理论在logn附近,实验中在非理论值附近选择k也可能最优。


*7.4-6 考虑对PARTITION过程做这样的修改:从数组A中随机的选择出三个元素,并围绕这三个数的中数对它们进行划分。求出以α的函数形式表示的、最坏情况中α:(1-α)划分的近似概率。

*


posted on 2014-04-08 15:54  电子幼体  阅读(484)  评论(0编辑  收藏  举报

导航