資料結構 堆

2021-07-23 23:27:08 字數 810 閱讀 7628

本**參考《演算法導論》

堆結構是一種特殊的二叉樹結構,可以近似看作於完全二叉樹,我們一般討論的堆結構是二叉堆結構,其形式一般是:最大堆,最小堆。最大堆每次從堆頂取出最大值然後進行維護使得下一次取出的值也是最大值,最小堆同理。

左為最大堆 右為最小堆

實現**如下

#include#include#include#define len 1010

using namespace std;

int heap[len];

int hlength;

void maxdown(int p)//自上到下維護

}heap[p] = t;

}void mindown(int p)

}heap[p] = t;

}void maxup(int p) //自下到上維護

}}void downup(int p)

}}void maxinsert() //在堆最底部最靠左的位置插入值

void mininsert()

int getmax() //返回最大值 自上到下維護

int getmin()

void display()

int main()

return 0;

}

資料結構 堆

最大堆 最小堆 堆的定義是 n個元素的序列,當且僅當滿足如下關係時被成為堆 1 ki k2i 且 ki k2i 1 或 2 ki k2i 且 ki k2i 1 i 1,2,n 2 當滿足 1 時,為最小堆,當滿足 2 時,為最大堆。若將此序列對應的一維陣列堪稱是乙個完全二叉樹,則2i和2i 1個節點...

資料結構 堆

資料結構 堆的操作和實現 當應用優先順序佇列或者進行堆排序時,一般利用堆來實現。堆是乙個完全 除最底層 外都是滿的 二叉樹,並滿足如下條件 1 根結點若有子樹,則子樹一定也是堆。2 根結點一定大於 或小於 子結點。因為要求堆必須是完全二叉樹,所以可以用線性的資料結構,比如陣列,來實現堆。利用陣列實現...

資料結構 堆

堆常用來實現優先佇列,在這種佇列中,待刪除的元素為優先順序最高 最低 的那個。在任何時候,任意優先元素都是可以插入到佇列中去的,是電腦科學中一類特殊的資料結構的統稱 最大 最小 堆是一棵每乙個節點的鍵值都不小於 大於 其孩子 如果存在 的鍵值的樹。大頂堆是一棵完全二叉樹,同時也是一棵最大樹。小頂堆是...