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