利用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-α)劃分的近似概率。
《演算法導論》筆記 第7章 快速排序
第7章 快速排序 像合併排序一樣,快速排序也是基於分治模式的。下面對乙個典型的子陣列a p r 排序的分治過程的三個步驟 分解 陣列a p r 被劃分成兩個 可能空 的子陣列a p q 1 和a q 1 r 使得a p q 1 中的每個元素都小於等於a q a q 1 r 中的每個元素都大於等於a ...
演算法導論 第7章 快速排序
一 快速排序演算法的基本特性 時間複雜度 o n lgn 最壞 o n 2 空間複雜度 o n lgn 不穩定。快速排序是一種排序演算法,對包含n個數的輸入陣列,平均時間為o nlgn 最壞情況是o n 2 通常是用於排序的最佳選擇。因為,排序最快,也只能達到o nlgn 二 快速排序演算法的描述 ...
演算法導論 第7章快速排序
1 演算法描述 快速排序也是基於分治模式的,下面是乙個典型子陣列a p.r 排序的分治過程,主要分為三個步驟 1 分解 將陣列a p.r 劃分成兩個子陣列a p.q 1 和a q 1.r 使得前乙個陣列中每個值都小於等於a q 後乙個陣列每個值都大於a q 下標q也在這個分解過程中求得。2 解決 通...