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