上篇博客主要講了冒泡排序、插入排序、希爾排序以及選擇排序。本篇博客就來講一下堆排序(Heap Sort)??吹蕉雅判蜻@個名字我們就應(yīng)該知道這種排序方式的特點,就是利用堆來講我們的序列進行排序。“堆”其實就是一種有著特定結(jié)構(gòu)的完全二叉樹,下方將會詳細的介紹一下堆。本篇博客講的就是堆排序,首先我們先對大頂堆,小丁堆進行介紹,然后構(gòu)建堆,最后利用堆的特性對我們的數(shù)據(jù)序列進行排序。

下方我們依然是先給出相應(yīng)內(nèi)容的示意圖,然后給出相應(yīng)的代碼實現(xiàn),最后就是測試用例了。還是那句話,廢話少說,進入今天博客的主題。

 

一、堆

在本篇博客的第一部分,我們先聊一下什么什么是“堆”。在數(shù)據(jù)結(jié)構(gòu)中的堆其實就是一顆“完全二叉樹”,不過此完全二叉樹有著一些特殊的規(guī)則,根據(jù)這些特殊的規(guī)則又可以將“堆”分為“大頂堆”和“小頂堆”。大頂堆的特點是該“完全二叉樹”的根節(jié)點比其左右節(jié)點都要大,而小頂堆與其相反,在“小頂堆”中根節(jié)點要比左右子節(jié)點的值都要小。下方詳細的介紹了“大頂堆”和“小頂堆”。

網(wǎng)友評論