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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

六、Analysis of quicksort

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 六、Analysis of quicksort 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 引言

如題目所示,本節的精華在于用數學解決一個直覺上看似紛亂復雜的問題,里面有一些一般性的分析方法,如引入Indicator變量,從而把不確定問題引入到概率框架進行分析,一步一步把直覺上混亂的問題理清楚,數學之美也就是如此吧!

如果有個算法在某些情況下表現的很差,在某些情況下又表現的不錯,那么你還會放心的使用該算法嗎?通過下面的分析后你會很放心使用快速排序算法。

2 Quicksort

2.1 算法描述


2.2 手工演示

  • 指針iii指示的是≤pivot\leq pivotpivot的最后一個,作用是是用來標記≤pivot\leq pivotpivot≥pivot\geq pivotpivot的分割狀態,指針jjj用來遍歷所有元素,每遍歷一個元素都會和pivotpivotpivot比較,不斷更新iii的指示狀態。

2.3 實現

# -*- coding: utf-8 -*-def PARTITION(A, p, r):x = A[r]i = p - 1for j in range(p, r):if A[j] <= x:i = i + 1A[i], A[j] = A[j], A[i]A[i + 1], A[r] = A[r], A[i + 1]return i + 1def QUICK_SORT(A, p, r):if p < r:q = PARTITION(A, p, r)QUICK_SORT(A, p, q - 1)QUICK_SORT(A, q + 1, r)if __name__ == '__main__':A = ['x', 2, 8, 7, 1, 3, 5, 6, 4]print('before sort:', A[1:])QUICK_SORT(A, 1, len(A) - 1)print('after sort:', A[1:])

運行結果:

before sort: [2, 8, 7, 1, 3, 5, 6, 4] after sort: [1, 2, 3, 4, 5, 6, 7, 8]

3 Analysis of quicksort

3.1 worst case


用遞歸樹分析如下:

3.2 best case


應用主定理容易得到T(n)=Θ(nlogn)T(n)=\Theta(nlogn)T(n)=Θ(nlogn)

3.3 110,910\frac{1}{10}, \frac{9}{10}101?,109?case

下面看一種感覺直覺上很差,其實效果很好的情況。

使用遞歸樹分析:

  • 注意log109n/log2n=log1092log_{\frac{10}{9}}n/log_{2}n = log_{\frac{10}{9}}2log910??n/log2?n=log910??2,這是一個常數。

3.4 worst best交替情況

  • 好壞交替的情況下,最后仍然是好的!

3.5 random case

上面從矛盾的特殊性上讓直覺有一個直觀的感受,只要不是特別極端(如一個初始狀態是逆序的數列),貌似大部分情況下都是ok的,下面用概率框架確認這種直觀的感覺是正確的。

  • 對于離散不確定問題,要引入概率框架進行討論,首先要引入一個合適的隨機變量,這里引入指示器(Indicator)隨機變量,這個變量在機器學習算法中使用更為廣泛,看似簡單的一個定義,卻可以化繁為簡的用一個表達式表示所有情況。

  • 至此,已經進入到概率框架,可以暫時忘記之前的算法問題背景:

  • 概率世界都是是不確定的,研究概率大目的是找出不確定問題的平均特性,如期望、方差等,這里只關注期望。

  • 下面的推到中用到了期望的線性可加性和獨立可乘性。

分割的獨立性:第一次分割后,數組分為第a部分和第b部分,a部分具體在哪個位置分割已經和第一次分割沒有關系。

  • 猜想E[T(n)]≤anlgnE[T(n)] ≤ an lg nE[T(n)]anlgn,a足夠大,接下來數學歸納法要登場了!,首先有一個數學事實要知道,這個結論也是用數學歸納法容易證明:

  • 使用數學歸納法證明E[T(n)]≤anlgnE[T(n)] ≤ an lg nE[T(n)]anlgn

4 總結

  • 從上面的分析中可以看到,快速排序大概率是Θ(nlogn)\Theta(nlogn)Θ(nlogn)的,在實際應用中快速排序往往是歸并排序速度的2倍以上,如果在細節上對算法微調,則可以表現出更好的性能.
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的六、Analysis of quicksort的全部內容,希望文章能夠幫你解決所遇到的問題。

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