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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

?
圖9-9-7
在最優(yōu)情況下,Partition每次都劃分得很均勻,如果排序n個(gè)關(guān)鍵字,其遞歸樹的深度就為.log2n.+1(.x.表示不大于x的最大整數(shù)),即僅需遞歸log2n次,需要時(shí)間為T(n)的話,第一次Partiation應(yīng)該是需要對(duì)整個(gè)數(shù)組掃描一遍,做n次比較。然后,獲得的樞軸將數(shù)組一分為二,那么各自還需要T(n/2)的時(shí)間(注意是最好情況,所以平分兩半)。于是不斷地劃分下去,我們就有了下面的不等式推斷。
  • 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)?
  • 也就是說,在最優(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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。