快速排序最好,最坏,平均复杂度分析
我們來分析一下快速排序法的性能。快速排序的時間性能取決于快速排序遞歸的深度,可以用遞歸樹來描述遞歸算法的執行情況。如圖9‐9‐7所示,它是{50,10,90,30, 70,40,80,60,20}在快速排序過程中的遞歸過程。由于我們的第一個關鍵字是50,正好是待排序的序列的中間值,因此遞歸樹是平衡的,此時性能也比較好。
| ? |
| 圖9-9-7 |
也就是說,在最優的情況下,快速排序算法的時間復雜度為O(nlogn)。
在最壞的情況下,待排序的序列為正序或者逆序,每次劃分只得到一個比上一次劃分少一個記錄的子序列,注意另一個為空。如果遞歸樹畫出來,它就是一棵斜樹。此時需要執行n‐1次遞歸調用,且第i次劃分需要經過n‐i次關鍵字的比較才能找到第i個記錄,也就是樞軸的位置,因此比較次數為?,最終其時間復雜度為O(n2)。
平均的情況,設樞軸的關鍵字應該在第k的位置(1≤k≤n),那么:
| ? |
由數學歸納法可證明,其數量級為O(nlogn)。
就空間復雜度來說,主要是遞歸造成的棧空間的使用,最好情況,遞歸樹的深度為log2n,其空間復雜度也就為O(logn),最壞情況,需要進行n‐1遞歸調用,其空間復雜度為O(n),平均情況,空間復雜度也為O(logn)。
可惜的是,由于關鍵字的比較和交換是跳躍進行的,因此,快速排序是一種不穩定的排序方法。
來源:http://blog.csdn.net/weshjiness/article/details/8660583
總結
以上是生活随笔為你收集整理的快速排序最好,最坏,平均复杂度分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 张泉灵(说一说张泉灵的简介)
- 下一篇: 质能方程(说一说质能方程的简介)