堆排序的最壞已耗用時間和最優已耗用時間

來源:互聯網
上載者:User
1964年Williams發明的,1992年Sedgewick發表了堆排序效能分析 "The analysis of heapsort"。所以求堆排序的最優已耗用時間比較難。一、最壞已耗用時間
由於前面已經證明了:在n個元素的堆中,MAX-HEAPIFY的最壞已耗用時間為Ω(lgn)。如果要求堆排序的最壞已耗用時間,則可以假設每次MAX-HEAPIFY都是最壞已耗用時間。堆T為一般堆,即可能是滿二叉樹,也可能不是滿二叉樹,如果不是滿二叉樹,則將最下面一層刪除後變成滿二叉樹,即為T‘。設F()為最壞已耗用時間,則F(T)>=F(T').
我們只要求F(T')=Ω(nlgn)即可。
所以得證。

二、最優已耗用時間假設要堆排序的堆T不是滿二叉樹,則我們可以將最下層的葉子節點去除,使其變成滿二叉樹T‘,我們可以說明對T’堆排序的最優時間一定小於對T堆排序的最優時間,即如果設f()為堆排序的優有時間,則f(T)>f(T')。


因此我們先考慮對滿二叉樹排序,首先給出幾個命題。
命題:假設有k層滿二叉樹,即高度為k-1,經過2^(k-1)次EXTRACT-MAX即將堆的高度減少一層後,這2^(k-1)個節點中至少還有2^(k-1)/2仍在堆中。
證明:首先給出兩個性質,(1)如果要刪除兒子節點,必須先刪除父親節點,因為EXTRACT-MAX是從大到小的,而父親節點肯定比兒子節點大,所以父親肯定比兒子節點要先被EXTRACT。(2)如果在第k層有m個點要刪除,則在第k-1層,至少有ceil(m/2)個點要刪除,比如第k層有2個節點要刪除,則如果兩個節點有共同父親,則在k-1層中至少刪除其父親,如果兩個節點沒有共同父親,則至少要刪除它們的父親後才能夠刪除它們。
我們如果證明了可以有2^(k-1)/2個節點在堆中,則大於2^(k-1)/2個節點在堆中就不需要證明了。
當有2^(k-1)/2個節點在堆中,則有2^(k-2)個節點不在堆中,在他的上一層至少有ceil(2^(k-1)/4)=2^(k-3)個節點不在堆中,以此類推,在第一層有1個節點不在堆中。因此這些不在堆中的節點加起來:2^(k-2)+2^(k-3)+....+2^0=2^(k-1)-1,個數小於EXTRACT-MAX的次數,因此可能,因為如果肯定不在堆中的點的個數大於EXTRACT-MAX的次數,則說明不可能。
當有2^(k-1)/2+1 個節點不在堆中,則上一層有2^(k-3)+1個節點不在堆中,類推,則第一層有1個節點不在堆中。這些點加起來:2^(k-2)+1+....2^0=2^(k-1)-1+k-1=2^(k-1)+k-2,因此當k>2時這個個數就大於EXTRACT-MAX的次數了,所以不成立,因此得證。

因為經過2^(k-1)次EXTRACT-MAX後至少有2^(k-1)/2個節點在堆中,所以至多有2^(k-1)/2個節點不在堆中,因為2^(k-1)次EXTRACT-MAX需要拿走2^(k-1)個節點,因此在1~k-1層中至少有2^(k-2)個節點不在堆中,即會被拿走。
命題:對於一棵k層滿二叉樹,任意非葉子節點都只能通過swap操作往上走,而不能往下走。
證明:這個很顯然。
因為上面的命題,所以對於1~k-1層至少2^(k-2)個非葉子節點,如果要被拿走,只能通過swap操作往上走,因此最好情況分析就是swap操作至少做幾次。假設這些節點全部塞滿1~k-2層,一共2^(k-2)-1個,全部都swap到根節點需要:k=Θ(lgn),所以2^0 * 0 + 2^1 * 1 + 2^2 * 2 + ..... + 2^(K-3) *(K-3)=Θ(nlgn)
所以k->k-1層需要Θ(nlgn),所以k->k-2層也是,以此類推,所以最優情況複雜度為Θ(nlgn)=Ω(nlgn)
滿二叉樹考慮好了,假設給定一棵一般樹,結點個數為n,則將最下面一層的葉子去除,就變成了一棵滿二叉樹,而最下面一層最多為n/2,所以m=(n-n/2)=n/2為滿二叉樹的節點個數,因為滿二叉樹的複雜度為:Ω(mlgm)=Ω((n/2)lg(n/2))=Ω(nlgn)所以一般樹肯定大於等於Ω(nlgn),所以肯定也是Ω(nlgn)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.