堆排序

輸入:n個(gè)數(shù)的一個(gè)序列 (A[1..n])

輸出:輸入序列的一個(gè)排序,滿(mǎn)足b1≤b2≤…≤bn。

表示堆的數(shù)組A包括兩個(gè)屬性:A.length給出數(shù)組元素的個(gè)數(shù),A.heap-size表示有多少個(gè)堆元素存儲(chǔ)在該數(shù)組中。也就是說(shuō),雖然A[1..A.length]可能都存有數(shù)據(jù),但只有A[1..A.heap-size]中存放的是堆的有效元素。這里, 0 ≤ A.heap-size ≤ A.length。

(二叉)堆數(shù)組A是一個(gè)近似的完全二叉樹(shù),樹(shù)的根結(jié)點(diǎn)是A[1],這樣,給定一個(gè)結(jié)點(diǎn)的下標(biāo)i,它的父節(jié)點(diǎn)、左孩子和右孩子的下標(biāo):

`PARENT(i): return i/2// i>>1

LEFT(i): return2i// i<<1

RIGHT(i): return2i+1// i<<1 + 1

`

最大堆:堆的最大元素存放在根結(jié)點(diǎn)中。并且,在任一子樹(shù)中,該子樹(shù)所包含的所有結(jié)點(diǎn)的值都不大于該子樹(shù)根結(jié)點(diǎn)的值。即:A[PARENT(i) ≥ A[i]。堆排序使用最大堆。

最小堆:堆的最小元素存放在根結(jié)點(diǎn)中。并且,在任一子樹(shù)中,該子樹(shù)所包含的所有結(jié)點(diǎn)的值都不小于該子樹(shù)根結(jié)點(diǎn)的值。即:A[PARENT(i) ≤ A[i]。最小堆常用來(lái)構(gòu)造優(yōu)先隊(duì)列。

堆中結(jié)點(diǎn)的高度:該結(jié)點(diǎn)到葉結(jié)點(diǎn)最長(zhǎng)簡(jiǎn)單路徑上邊的數(shù)目。

堆的高度:根結(jié)點(diǎn)的高度。O(lgn)。其中,n為堆中元素個(gè)數(shù)。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 選擇排序 每次在n個(gè)記錄中選擇一個(gè)最小的需要比較n-1次,但是這樣的操作并沒(méi)有把每一趟的比較結(jié)果保存下來(lái),在后一趟...
    wlj1107閱讀 1,771評(píng)論 0 2
  • 堆排序 堆排序基本簡(jiǎn)介 1991年的計(jì)算機(jī)先驅(qū)獎(jiǎng)獲得者、斯坦福大學(xué)計(jì)算機(jī)科學(xué)系教授羅伯特·弗洛伊德(Robert ...
    BlackMammba閱讀 2,016評(píng)論 0 10
  • 選擇排序(Selection sort)是一種簡(jiǎn)單直觀的排序算法。它的工作原理如下。首先在未排序序列中找到最?。ù?..
    風(fēng)雪圍城閱讀 423評(píng)論 0 0
  • 2006年,作為一名高二學(xué)生,我開(kāi)始接觸各種小說(shuō),彼時(shí)大家總是以憂(yōu)郁來(lái)標(biāo)榜自己酷的品格,所以看的閑書(shū)也是以類(lèi)似的題...
    青樹(shù)芽閱讀 475評(píng)論 2 0
  • 文/陳墨祎 時(shí)至工作兩年,我又冒出了強(qiáng)烈的辭職的想法,上次涌起這個(gè)念頭恰好在一年前,不知什么時(shí)候開(kāi)始,辭職這事也有...
    陳墨祎閱讀 650評(píng)論 3 10

友情鏈接更多精彩內(nèi)容