日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构之「堆」

發(fā)布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构之「堆」 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

堆 是一種特殊的完全二叉樹結(jié)構(gòu),通常,它有兩種類型:最小堆 和 最大堆。

最小堆(min heap)是父節(jié)點的值恒小于等于子節(jié)點的值。

最大堆(max heap)是父節(jié)點的值恒大于等于子節(jié)點的值。

二叉堆的性質(zhì)

任意節(jié)點小于(或大于)它的所有子節(jié)點,最小值(或最大值)在堆的根上。
堆總是一棵完全樹。即除了最底層,其他層的節(jié)點都被元素填滿,且最底層盡可能地從左到右填入。

二叉堆的實現(xiàn)

堆的存儲結(jié)構(gòu)

堆一般可以用數(shù)組的方式來存儲,數(shù)組的順序其實就是堆層級遍歷的結(jié)果。

堆的插入

由于堆是一個完全二叉樹,每次總是先填滿上一層,再在下一層從左往右依次插入。

插入步驟:
1.首先將新元素增加到堆的末尾。
2.然后在新元素與其父節(jié)點的值比較,如果新元素小于父節(jié)點的值則將兩者交換位置。
3.不斷進行第2步操作,直到不需要交換元素,或者達到堆頂。

最后就會得到一個最小堆,上面交換元素的過程叫做上濾。

堆的刪除

堆的刪除和插入操作是剛剛相反的,插入是從下往上調(diào)整堆,刪除是從上往下調(diào)整堆。

刪除步驟:
1.首先刪除堆頂元素。
2.然后在比較左右子節(jié)點,將小的元素上調(diào)。
3.不斷進行步驟2,直到不需要調(diào)整或者調(diào)整到堆底了。

上面交換元素的過程叫做下濾。

總結(jié)

堆有兩種類型,最大堆和最小堆,并且堆總是一顆完全樹。

由于堆的 父節(jié)點的值恒小于等于子節(jié)點的值 或者 父節(jié)點的值恒大于等于子節(jié)點的值,可以作為 Top n 使用。

堆(通常是二叉堆)常用于排序。這種算法稱作堆排序。

PS:
清山綠水始于塵,博學(xué)多識貴于勤。
我有酒,你有故事嗎?
微信公眾號:「清塵閑聊」。
歡迎一起談天說地,聊代碼。

總結(jié)

以上是生活随笔為你收集整理的数据结构之「堆」的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。