上篇博客主要講了冒泡排序、插入排序、希爾排序以及選擇排序。本篇博客就來講一下堆排序(Heap Sort)。看到堆排序這個名字我們就應該知道這種排序方式的特點,就是利用堆來講我們的序列進行排序。“堆”其實就是一種有著特定結構的完全二叉樹,下方將會詳細的介紹一下堆。本篇博客講的就是堆排序,首先我們先對大頂堆,小丁堆進行介紹,然后構建堆,最后利用堆的特性對我們的數(shù)據(jù)序列進行排序。
下方我們依然是先給出相應內容的示意圖,然后給出相應的代碼實現(xiàn),最后就是測試用例了。還是那句話,廢話少說,進入今天博客的主題。
一、堆
在本篇博客的第一部分,我們先聊一下什么什么是“堆”。在數(shù)據(jù)結構中的堆其實就是一顆“完全二叉樹”,不過此完全二叉樹有著一些特殊的規(guī)則,根據(jù)這些特殊的規(guī)則又可以將“堆”分為“大頂堆”和“小頂堆”。大頂堆的特點是該“完全二叉樹”的根節(jié)點比其左右節(jié)點都要大,而小頂堆與其相反,在“小頂堆”中根節(jié)點要比左右子節(jié)點的值都要小。下方詳細的介紹了“大頂堆”和“小頂堆”。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二) 2017-07-26