個問題其實也沒有多麼複雜,但是網上這部分內容不多,故總結一下最優與最差比較次數。
n個元素線性表快速排序,最好情況下比較次數是多少?
參照嚴書的方法,以第一位作為標桿。
①考慮第一趟排序,無論怎樣也要有n-1次比較次數;
②如果此時能把資料分成兩部分,前一部分與後一部分元素個數相近,那樣就是最優的。
例如,4 1 2 3 5 6 7,經過一趟排序,變成 1 2 3 4 5 6 7 。也就是說,以4為標桿,一趟後分成了兩部分,這兩部分個數相同或相差 1,那麼快排會很優。
於是,可以想到,最優時,n個數,第一趟分成前⌊(n-1)/2⌋,後⌈(n-1)/2⌉兩組,每組也是按照最優的分,設最優是an,於是有:
an = a⌊(n-1/2)⌋+a⌈(n-1/2)⌉ + n - 1
比如,n=7時,最優情況就是 a7=a3+a3+6 ,a3=a1+a1+2 ,而顯然a1=0。
於是a3=2,a7=10。
舉 例 4 1 3 2 6 5 7 。第一次4為標桿,一趟後為 2 1 34 6 5 7
第二趟兩邊分別以2,6為標桿,這樣最好,因為是均分了。
問題,n=8時,最好排序次數?
a8=7+a4+a3,a3算的2,a4=3+a1+a2,顯然a2=1,於是a4=4,故a8=13
因此,n=8時,最好情況下比較次數是13。
舉例,4 1 3 2 6 5 7 8 可以數一下
對於別的情況,參照這個思路即可輕鬆求比較次數以及舉例。
n個元素線性表快速排序,最壞情況下比較次數是多少?
這個就容易多了,因為順序或者逆序時最壞的。
故比較次數,1+2+3……+ n-1 = n(n-1)/2
快速排序比較次數 各種排序演算法總結
各種排序演算法的穩定性,時間複雜度和空間複雜度總結 我們比較時間複雜度函式的情況 時間複雜度函式o n 的增長情況 所以對於n較大的排序記,一般的選擇都是時間複雜度為o nlog2n 的排序方法。時間複雜度來說 1.平方階o n2 排序 各類簡單排序 直接插入排序,直接選擇排序和氣泡排序 2.線性對...
各種排序演算法的比較次數
借助比較的排序每次比較貢獻o 1 的複雜度 插入排序 最少n 1 最多n n 1 2 氣泡排序 最少n 1 最多n n 1 2 選擇排序 n n 1 2 快速排序 intpartition int arr intlow inthigh arr low pivo return low 快速排序 遞迴 ...
快速排序和歸併排序比較
by 潘雲登 date 2009 7 12 email intrepyd gmail.com homepage 對於商業目的下對本文的任何行為需經作者同意。寫在前面 1.本文內容對應 演算法導論 第2版 第2章和第7章。2.比較了歸併排序與快速排序之間的不同策略,啟發對分治演算法的深入思考。分治法有...