日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

快速排序最好,最坏,平均复杂度分析

發布時間:2024/9/20 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速排序最好,最坏,平均复杂度分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們來分析一下快速排序法的性能。快速排序的時間性能取決于快速排序遞歸的深度,可以用遞歸樹來描述遞歸算法的執行情況。如圖9‐9‐7所示,它是{50,10,90,30, 70,40,80,60,20}在快速排序過程中的遞歸過程。由于我們的第一個關鍵字是50,正好是待排序的序列的中間值,因此遞歸樹是平衡的,此時性能也比較好。

?
圖9-9-7
在最優情況下,Partition每次都劃分得很均勻,如果排序n個關鍵字,其遞歸樹的深度就為.log2n.+1(.x.表示不大于x的最大整數),即僅需遞歸log2n次,需要時間為T(n)的話,第一次Partiation應該是需要對整個數組掃描一遍,做n次比較。然后,獲得的樞軸將數組一分為二,那么各自還需要T(n/2)的時間(注意是最好情況,所以平分兩半)。于是不斷地劃分下去,我們就有了下面的不等式推斷。
  • T(n)≤2T(n/2)?+n,T(1)=0 ?
  • T(n)≤2(2T(n/4)+n/2)?+n=4T(n/4)+2n ?
  • T(n)≤4(2T(n/8)+n/4)?+2n=8T(n/8)+3n ?
  • …… ?
  • T(n)≤nT(1)+(log2n)×n=?O(nlogn)?
  • 也就是說,在最優的情況下,快速排序算法的時間復雜度為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

    總結

    以上是生活随笔為你收集整理的快速排序最好,最坏,平均复杂度分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。