上篇博客主要講了冒泡排序、插入排序、希爾排序以及選擇排序。本篇博客就來(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ì)的介紹了“大頂堆”和“小頂堆”。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26