歸併排序時間複雜度分析

歸併排序時間複雜度分析

主要參考了他的博文,他還講解了其他排序的時間複雜度分析及算法實現。

可以說合並排序是比較複雜的排序,特別是對於不瞭解分治法基本思想的同學來說可能難以理解。總時間=分解時間+解決問題時間+合併時間。分解時間就是把一個待排序序列分解成兩序列,時間爲一常數,時間複雜度o(1).解決問題時間是兩個遞歸式,把一個規模爲n的問題分成兩個規模分別爲n/2的子問題,時間爲2T(n/2).合併時間複雜度爲o(n)。總時間T(n)=2T(n/2)+o(n).這個遞歸式可以用遞歸樹來解,其解是o(nlogn).此外在最壞、最佳、平均情況下歸併排序時間複雜度均爲o(nlogn).從合併過程中可以看出合併排序穩定。
用遞歸樹的方法解遞歸式T(n)=2T(n/2)+o(n):假設解決最後的子問題用時爲常數c,則對於n個待排序記錄來說整個問題的規模爲cn。

這裏寫圖片描述

從這個遞歸樹可以看出,第一層時間代價爲cn,第二層時間代價爲cn/2+cn/2=cn…..每一層代價都是cn,總共有logn+1層。所以總的時間代價爲cn*(logn+1).時間複雜度是o(nlogn).

發佈了42 篇原創文章 · 獲贊 34 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章