快速排序时间复杂度分析推导
生活随笔
收集整理的這篇文章主要介紹了
快速排序时间复杂度分析推导
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最優(yōu)情況(每次都能剛好二分):
確認(rèn)第1個數(shù)要遍歷n個數(shù)
確認(rèn)第2個數(shù)需要遍歷n/2個數(shù),第3個數(shù)需要遍歷n/2個數(shù)
確認(rèn)第4、5、6、7個數(shù)各需要遍歷n/4個數(shù)
將分段縮小到1,則需要分x次,即1=n/(2^x),x=log2n,即一共有l(wèi)og2n層
將每一層都近似得看作遍歷n個數(shù),則總遍歷個數(shù)為n*log2n
即最優(yōu)情況時間復(fù)雜度為O(nlogn)
最差情況(每次都以最小或最大數(shù)為界點值,沒能將數(shù)組二分):
確認(rèn)第1個數(shù)要遍歷n個數(shù)
確認(rèn)第2個數(shù)要遍歷n-1個數(shù)
以此類推
等差求和得遍歷個數(shù)為n*(1+n)/2,時間復(fù)雜度為O(n^2)
這里也能看出為什么分段能提高效率:分段后,確認(rèn)一個數(shù)所需遍歷的區(qū)間一直被指數(shù)級縮小;而不分段區(qū)間每次只縮小1。
歡迎指正
總結(jié)
以上是生活随笔為你收集整理的快速排序时间复杂度分析推导的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: camerax 自动聚焦_Android
- 下一篇: JDK源码——源码学习总结与分析