堆是树数据结构,其中树的较高级别总是包含比较低级别更大(或更小,如果它设置的那样)值."堆"是一堆程序可用于动态分配的空闲RAM.它们都被称为"堆",但是那个与另一个有什么关系呢?
没什么,说实话.我认为单词heap只是简单地用它来进行日常(非技术)用法,并且单独应用于这两个概念作为合理的类比.
在第一种情况下(树数据结构意义),描述堆最合适,因为"更大"的对象放在树中更高的位置(其中"更大"由任意键函数确定) - 即有一种堆积较大的物体在较大的物体之上(或在较大物体的顶部,取决于您的想法).这就是我解释它的方式; 无论谁首先将名称堆应用于此数据结构,都认为它在他的脑海中是一个合适的名称,而且它只是卡住了.
在第二种情况下(RAM的块),堆的名称可能更明显一些."Heap"在这里只是"一个高度随意的顺序的大量集合",这似乎适用于普通用法,就像动态分配内存块一样.
在任何情况下,我都不会担心你可以在这两个想法之间画出抽象的隐喻相似之处.完全单独对待它们,在任何情况下都不会出错.
编辑:似乎基于树的数据结构可能从抽象代数堆中取名,这在计算机科学中是相当普遍的.但是,我不想确认或否认这一点......
请参阅此站点以了解内存的免费存储库名称"heap"的来源.
它们都有相同的名称,就是它.
"堆"永远不会被安排为实际的堆数据结构.