堆的基本操作(C 語言版)

堆的基本操作(C 語言版)

複習堆的基本操作的C語言實現,以小頂堆爲例。因爲大頂堆和小頂堆實現的方式差不多,會小頂堆,大頂堆也就會了吧哈哈!

堆的介紹

堆的定義

堆(Heap)就是用數組實現的二叉樹,所以它沒有使用父指針或者子指針。堆根據“堆屬性”來排序,“堆屬性”決定了樹中節點的位置。常見的堆有二叉堆、左傾堆、斜堆、二項堆、斐波那契堆等等。

堆的常用方法:

  • 構建優先隊列
  • 支持堆排序
  • 快速找出一個集合中的最小值(或者最大值)

堆的屬性

堆分爲兩種:最大堆和最小堆,兩者的差別在於節點的排序方式。

最大堆(大頂堆):① 根的值大於左右子樹的值 ② 子樹也是最大堆

最小堆(小頂堆):① 根的值小於左右子樹的值 ② 子樹也是最小堆

最大堆

這是一個最大堆,,因爲每一個父節點的值都比其子節點要大。1072 都大。751都大。

堆屬性非常的有用,因爲堆常常被當做優先隊列使用,因爲可以快速的訪問到“最重要”的元素。

我們準備將上面的例子中的樹這樣存儲:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章