堆
堆是一种由包含值的“节点”组成的数据结构。典型的堆在顶部有一个根节点,其正下方可能有两个或更多子节点。每个节点都可以有两个或更多子节点,这意味着堆会随着子节点的增加而变宽。从视觉上看,堆像一棵倒置的树,整体形状就是一个堆。
虽然堆中的每个节点都可以有两个或更多子节点(也称为“子代”),但大多数堆会将每个节点限制为两个子节点。这类堆也称为二叉堆,可用于存储已排序的数据。例如,“二叉最大堆”会将最大值存储在根节点中。第二大值和第三大值存储在根节点的子节点中。在整棵树中,每个节点的值都大于其任一子节点的值。“二叉最小堆”则相反,根节点存储最小值,并且每个节点的值都小于其子节点的值。
在计算机科学中,堆通常以简单的图表表示。不过,实际将数据存储在堆中要复杂得多。要创建堆,程序员必须为插入和删除数据分别编写算法。插入堆中的值通常存储在数组中,程序可以引用这个数组。由于堆中的数据已经排序,因此堆为搜索特定值提供了一种高效方式。
NOTE:“堆”也是一个编程术语,可用于描述动态分配的内存。活动的应用程序可以访问这块内存。由于堆中的内存是动态分配的,因此它可能会根据正在使用的内存量增大或缩小。
测试你的知识