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

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

 

一、堆

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

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式