快速排序,冒泡排序時間復雜度推導


快速排序時間復雜度分析:
數組長度為n
1,平均復雜度:
t(n) = cn + 2t(n/2)
= cn + 2(cn/2 + 2t(n/4)) = 2cn + 4t(n/4)
= 2cn + 4(cn/4 + 2t(n/8)) = 3cn + 8t(n/8)
= icn + 2^i * t(n/(2^i))
當 2^i = n時, i = logn, 排序結束,
t(n) = cnlogn + n*t(1) = o(nlogn)
2,最壞復雜度:
在完全有序的情況下[比如從小到大有序]
i從開始,j從末尾向中間移動,選第一個元素a[0]為key,
i找第一個比key大的元素,a[1]符合條件,停止移動。
j找第一個比key小的元素,直到a[1]都沒找到,停止移動
判斷 key < a[1]不交換,
數組被划分為兩部分 a[0]和 a[1]~a[n]
如此,以后每次划分都只能划掉一個元素,由此,時間復雜度推導如下:
t(n) = cn + t(n-1) = cn + c(n-1) + t(n-2) ....
= cnn -ck + t(1) = cn^2 = 0(n^2)

冒泡排序的時間復雜度分析:
第一個元素:cn
第i個元素: cn
第n個元素: cn
總:n*cn = o(n^2)

參考文章如下:

https://www.cnblogs.com/surgewong/p/3381438.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM