【笔记】
利用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-α)划分的近似概率。
*